精华内容
下载资源
问答
  • eslint-plugin-fp-ts 的ESLint规则的集合 安装 假设已在您的项目中本地安装: # npm npm install --save-dev eslint-plugin-fp-ts # yarn yarn add --dev eslint-plugin-fp-ts 然后在您的.eslintrc配置中启用该...
  • 另一个TSLint配置它禁用它已经被处理的所有规则 , , 或 。 将在2019年的某个时候被,但尚未完成。 因此,也许您将与它一起使用,然后两次重复执行lint代码会很糟糕,尤其是对于那些具有 , , 或等效规则规则 ...
  • TS Eslint规则说明

    千次阅读 2020-01-14 12:05:59
    "no-irregular-whitespace": 2,//不能有不规则的空格 "no-iterator": 2,//禁止使用__iterator__ 属性 "no-label-var": 2,//label名不能与var声明的变量名相同 "no-labels": 2,//禁止标签声明 "no-lone-blocks": ...

    "no-alert": 0,//禁止使用alert confirm prompt
    "no-array-constructor": 2,//禁止使用数组构造器
    "no-bitwise": 0,//禁止使用按位运算符
    "no-caller": 1,//禁止使用arguments.caller或arguments.callee
    "no-catch-shadow": 2,//禁止catch子句参数与外部作用域变量同名
    "no-class-assign": 2,//禁止给类赋值
    "no-cond-assign": 2,//禁止在条件表达式中使用赋值语句
    "no-console": 2,//禁止使用console
    "no-const-assign": 2,//禁止修改const声明的变量
    "no-constant-condition": 2,//禁止在条件中使用常量表达式 if(true) if(1)
    "no-continue": 0,//禁止使用continue
    "no-control-regex": 2,//禁止在正则表达式中使用控制字符
    "no-debugger": 2,//禁止使用debugger
    "no-delete-var": 2,//不能对var声明的变量使用delete操作符
    "no-div-regex": 1,//不能使用看起来像除法的正则表达式/=foo/
    "no-dupe-keys": 2,//在创建对象字面量时不允许键重复 {a:1,a:1}
    "no-dupe-args": 2,//函数参数不能重复
    "no-duplicate-case": 2,//switch中的case标签不能重复
    "no-else-return": 2,//如果if语句里面有return,后面不能跟else语句
    "no-empty": 2,//块语句中的内容不能为空
    "no-empty-character-class": 2,//正则表达式中的[]内容不能为空
    "no-empty-label": 2,//禁止使用空label
    "no-eq-null": 2,//禁止对null使用==或!=运算符
    "no-eval": 1,//禁止使用eval
    "no-ex-assign": 2,//禁止给catch语句中的异常参数赋值
    "no-extend-native": 2,//禁止扩展native对象
    "no-extra-bind": 2,//禁止不必要的函数绑定
    "no-extra-boolean-cast": 2,//禁止不必要的bool转换
    "no-extra-parens": 2,//禁止非必要的括号
    "no-extra-semi": 2,//禁止多余的冒号
    "no-fallthrough": 1,//禁止switch穿透
    "no-floating-decimal": 2,//禁止省略浮点数中的0 .5 3.
    "no-func-assign": 2,//禁止重复的函数声明
    "no-implicit-coercion": 1,//禁止隐式转换
    "no-implied-eval": 2,//禁止使用隐式eval
    "no-inline-comments": 0,//禁止行内备注
    "no-inner-declarations": [2, "functions"],//禁止在块语句中使用声明(变量或函数)
    "no-invalid-regexp": 2,//禁止无效的正则表达式
    "no-invalid-this": 2,//禁止无效的this,只能用在构造器,类,对象字面量
    "no-irregular-whitespace": 2,//不能有不规则的空格
    "no-iterator": 2,//禁止使用__iterator__ 属性
    "no-label-var": 2,//label名不能与var声明的变量名相同
    "no-labels": 2,//禁止标签声明
    "no-lone-blocks": 2,//禁止不必要的嵌套块
    "no-lonely-if": 2,//禁止else语句内只有if语句
    "no-loop-func": 1,//禁止在循环中使用函数(如果没有引用外部变量不形成闭包就可以)
    "no-mixed-requires": [0, false],//声明时不能混用声明类型
    "no-mixed-spaces-and-tabs": [2, false],//禁止混用tab和空格
    "linebreak-style": [0, "windows"],//换行风格
    "no-multi-spaces": 1,//不能用多余的空格
    "no-multi-str": 2,//字符串不能用\换行
    "no-multiple-empty-lines": [1, {"max": 2}],//空行最多不能超过2行
    "no-native-reassign": 2,//不能重写native对象
    "no-negated-in-lhs": 2,//in 操作符的左边不能有!
    "no-nested-ternary": 0,//禁止使用嵌套的三目运算
    "no-new": 1,//禁止在使用new构造一个实例后不赋值
    "no-new-func": 1,//禁止使用new Function
    "no-new-object": 2,//禁止使用new Object()
    "no-new-require": 2,//禁止使用new require
    "no-new-wrappers": 2,//禁止使用new创建包装实例,new String new Boolean new Number
    "no-obj-calls": 2,//不能调用内置的全局对象,比如Math() JSON()
    "no-octal": 2,//禁止使用八进制数字
    "no-octal-escape": 2,//禁止使用八进制转义序列
    "no-param-reassign": 2,//禁止给参数重新赋值
    "no-path-concat": 0,//node中不能使用__dirname或__filename做路径拼接
    "no-plusplus": 0,//禁止使用++,--
    "no-process-env": 0,//禁止使用process.env
    "no-process-exit": 0,//禁止使用process.exit()
    "no-proto": 2,//禁止使用__proto__属性
    "no-redeclare": 2,//禁止重复声明变量
    "no-regex-spaces": 2,//禁止在正则表达式字面量中使用多个空格 /foo bar/
    "no-restricted-modules": 0,//如果禁用了指定模块,使用就会报错
    "no-return-assign": 1,//return 语句中不能有赋值表达式
    "no-script-url": 0,//禁止使用javascript:void(0)
    "no-self-compare": 2,//不能比较自身
    "no-sequences": 0,//禁止使用逗号运算符
    "no-shadow": 2,//外部作用域中的变量不能与它所包含的作用域中的变量或参数同名
    "no-shadow-restricted-names": 2,//严格模式中规定的限制标识符不能作为声明时的变量名使用
    "no-spaced-func": 2,//函数调用时 函数名与()之间不能有空格
    "no-sparse-arrays": 2,//禁止稀疏数组, [1,,2]
    "no-sync": 0,//nodejs 禁止同步方法
    "no-ternary": 0,//禁止使用三目运算符
    "no-trailing-spaces": 1,//一行结束后面不要有空格
    "no-this-before-super": 0,//在调用super()之前不能使用this或super
    "no-throw-literal": 2,//禁止抛出字面量错误 throw "error";
    "no-undef": 1,//不能有未定义的变量
    "no-undef-init": 2,//变量初始化时不能直接给它赋值为undefined
    "no-undefined": 2,//不能使用undefined
    "no-unexpected-multiline": 2,//避免多行表达式
    "no-underscore-dangle": 1,//标识符不能以_开头或结尾
    "no-unneeded-ternary": 2,//禁止不必要的嵌套 var isYes = answer === 1 ? true : false;
    "no-unreachable": 2,//不能有无法执行的代码
    "no-unused-expressions": 2,//禁止无用的表达式
    "no-unused-vars": [2, {"vars": "all", "args": "after-used"}],//不能有声明后未被使用的变量或参数
    "no-use-before-define": 2,//未定义前不能使用
    "no-useless-call": 2,//禁止不必要的call和apply
    "no-void": 2,//禁用void操作符
    "no-var": 0,//禁用var,用let和const代替
    "no-warning-comments": [1, { "terms": ["todo", "fixme", "xxx"], "location": "start" }],//不能有警告备注
    "no-with": 2,//禁用with

    "array-bracket-spacing": [2, "never"],//是否允许非空数组里面有多余的空格
    "arrow-parens": 0,//箭头函数用小括号括起来
    "arrow-spacing": 0,//=>的前/后括号
    "accessor-pairs": 0,//在对象中使用getter/setter
    "block-scoped-var": 0,//块语句中使用var
    "brace-style": [1, "1tbs"],//大括号风格
    "callback-return": 1,//避免多次调用回调什么的
    "camelcase": 2,//强制驼峰法命名
    "comma-dangle": [2, "never"],//对象字面量项尾不能有逗号
    "comma-spacing": 0,//逗号前后的空格
    "comma-style": [2, "last"],//逗号风格,换行时在行首还是行尾
    "complexity": [0, 11],//循环复杂度
    "computed-property-spacing": [0, "never"],//是否允许计算后的键名什么的
    "consistent-return": 0,//return 后面是否允许省略
    "consistent-this": [2, "that"],//this别名
    "constructor-super": 0,//非派生类不能调用super,派生类必须调用super
    "curly": [2, "all"],//必须使用 if(){} 中的{}
    "default-case": 2,//switch语句最后必须有default
    "dot-location": 0,//对象访问符的位置,换行的时候在行首还是行尾
    "dot-notation": [0, { "allowKeywords": true }],//避免不必要的方括号
    "eol-last": 0,//文件以单一的换行符结束
    "eqeqeq": 2,//必须使用全等
    "func-names": 0,//函数表达式必须有名字
    "func-style": [0, "declaration"],//函数风格,规定只能使用函数声明/函数表达式
    "generator-star-spacing": 0,//生成器函数*的前后空格
    "guard-for-in": 0,//for in循环要用if语句过滤
    "handle-callback-err": 0,//nodejs 处理错误
    "id-length": 0,//变量名长度
    "indent": [2, 4],//缩进风格
    "init-declarations": 0,//声明时必须赋初值
    "key-spacing": [0, { "beforeColon": false, "afterColon": true }],//对象字面量中冒号的前后空格
    "lines-around-comment": 0,//行前/行后备注
    "max-depth": [0, 4],//嵌套块深度
    "max-len": [0, 80, 4],//字符串最大长度
    "max-nested-callbacks": [0, 2],//回调嵌套深度
    "max-params": [0, 3],//函数最多只能有3个参数
    "max-statements": [0, 10],//函数内最多有几个声明
    "new-cap": 2,//函数名首行大写必须使用new方式调用,首行小写必须用不带new方式调用
    "new-parens": 2,//new时必须加小括号
    "newline-after-var": 2,//变量声明后是否需要空一行
    "object-curly-spacing": [0, "never"],//大括号内是否允许不必要的空格
    "object-shorthand": 0,//强制对象字面量缩写语法
    "one-var": 1,//连续声明
    "operator-assignment": [0, "always"],//赋值运算符 += -=什么的
    "operator-linebreak": [2, "after"],//换行时运算符在行尾还是行首
    "padded-blocks": 0,//块语句内行首行尾是否要空行
    "prefer-const": 0,//首选const
    "prefer-spread": 0,//首选展开运算
    "prefer-reflect": 0,//首选Reflect的方法
    "quotes": [1, "single"],//引号类型 `` "" ''
    "quote-props":[2, "always"],//对象字面量中的属性名是否强制双引号
    "radix": 2,//parseInt必须指定第二个参数
    "id-match": 0,//命名检测
    "require-yield": 0,//生成器函数必须有yield
    "semi": [2, "always"],//语句强制分号结尾
    "semi-spacing": [0, {"before": false, "after": true}],//分号前后空格
    "sort-vars": 0,//变量声明时排序
    "space-after-keywords": [0, "always"],//关键字后面是否要空一格
    "space-before-blocks": [0, "always"],//不以新行开始的块{前面要不要有空格
    "space-before-function-paren": [0, "always"],//函数定义时括号前面要不要有空格
    "space-in-parens": [0, "never"],//小括号里面要不要有空格
    "space-infix-ops": 0,//中缀操作符周围要不要有空格
    "space-return-throw-case": 2,//return throw case后面要不要加空格
    "space-unary-ops": [0, { "words": true, "nonwords": false }],//一元运算符的前/后要不要加空格
    "spaced-comment": 0,//注释风格要不要有空格什么的
    "strict": 2,//使用严格模式
    "use-isnan": 2,//禁止比较时使用NaN,只能用isNaN()
    "valid-jsdoc": 0,//jsdoc规则
    "valid-typeof": 2,//必须使用合法的typeof的值
    "vars-on-top": 2,//var必须放在作用域顶部
    "wrap-iife": [2, "inside"],//立即执行函数表达式的小括号风格
    "wrap-regex": 0,//正则表达式字面量用小括号包起来
    "yoda": [2, "never"]//禁止尤达条件

    展开全文
  • TSLint挂钩规则 一个TSLint规则,用于为React挂钩强制实施。 该规则基于的。 产品特点 在潜在条件分支内检测使用React钩子: 如果陈述 短路条件表达式( && , || ) 三元表达式 循环( while , for , do ... ...
  • TSLint的ESLint规则 使用缺少的ESLint规则来改善TSLint 您想使用TypeScript进行编码,但是错过了ESLint中可用的所有规则? 现在,您可以使用此TSLint插件结合两个世界! 用法 从NPM安装到您的Dev Dependencies ...
  • } // index.ts(2,22): error TS2339: Property 'length' does not exist on type 'string | number'. // Property 'length' does not exist on type 'number'. 而有时候,我们确实需要在还不确定类型的时候就访问...

    1. null 和 undefined

    Null 和 Undefined 是其他任何类型(包括 void)的子类型,可以赋值给其它类型,如数字类型,此时,赋值后的类型会变成 null 或 undefined。而在TypeScript中启用严格的空校验(–strictNullChecks)特性,就可以使得null 和 undefined 只能被赋值给 void 或本身对应的类型,示例代码如下:

    // 启用 --strictNullChecks
    let x: number;
    x = 1; // 运行正确
    x = undefined;    // 运行错误
    x = null;    // 运行错误
    

    上面的例子中变量 x 只能是数字类型。如果一个类型可能出现 null 或 undefined, 可以用 | 来支持多种类型,示例代码如下:

    // 启用 --strictNullChecks
    let x: number | null | undefined;
    x = 1; // 运行正确
    x = undefined;    // 运行正确
    x = null;    // 运行正确
    

    JS null 和 undefined 的区别:点击链接

    2. never 类型

    never 是其它类型(包括 null 和 undefined)的子类型,代表从不会出现的值。这意味着声明为 never 类型的变量只能被 never 类型所赋值,在函数中它通常表现为抛出异常或无法执行到终止点(例如无限循环),示例代码如下:

    let x: never;
    let y: number;
    
    // 运行错误,数字类型不能转为 never 类型
    x = 123;
    
    // 运行正确,never 类型可以赋值给 never类型
    x = (()=>{ throw new Error('exception')})();
    
    // 运行正确,never 类型可以赋值给 数字类型
    y = (()=>{ throw new Error('exception')})();
    
    // 返回值为 never 的函数可以是抛出异常的情况
    function error(message: string): never {
        throw new Error(message);
    }
    
    // 返回值为 never 的函数可以是无法被执行到的终止点的情况
    function loop(): never {
        while (true) {}
    }
    

    3. TypeScript 变量使用前必须先声明

    声明变量的类型及初始值:(没有初始值,变量值会设置为 undefined)

    var [变量名] : [类型] =;
    var uname:string = "Runoob";
    

    4. 联合类型

    联合类型(Union Types)可以通过管道(|)将变量设置多种类型,赋值时可以根据设置的类型来赋值。

    注意: 只能赋值指定的类型,如果赋值其它类型就会报错。

    // 例子
    var val:string|number 
    val = 12 
    console.log("数字为 "+ val) 
    val = "Runoob" 
    console.log("字符串为 " + val)
    
    // 报错
    var val:string|number 
    val = true 
    

    联合类型在变量,数组,函数参数等等地方都可以使用。

    4. 类型断言(Type Assertion)

    理解一:类型断言可以用来手动指定一个值的类型,即允许变量从一种类型更改为另一种类型。

    理解二:类型断言好比其它语言里的类型转换,但是不进行特殊的数据检查和解构;

    理解三:型强制类型转换

    理解四:类型断言就是告诉编译器, 你不要帮我们检查了, 相信我,它就是这个类型。

    理解五:有的时候在联合类型的时候,只能访问联合类型的共有方法或者属性,但是这个时候是不够用的。这个时候就要自己手动断言成某个类型。断言不是改变某个类型,不是类型转换。这个时候能让取到你断言成的类型的方法。更像是call或者apply

    语法格式:

    // 格式一 有兼容性问题, 在使用到了JSX的时候兼容性不是很好
    <类型>// 格式二 (建议)在 tsx 语法(React 的 jsx 语法的 ts 版)中必须用格式二as 类型
    
    // 例子:格式一
    let someValue: any = "this is a string";
    let strLength: number = (<string>someValue).length;
    
    // 例子:格式二
    let someValue: any = "this is a string";
    let strLength: number = (someValue as string).length;
    

    当 TypeScript 不确定一个联合类型的变量到底是哪个类型的时候,我们只能访问此联合类型的所有类型里共有的属性或方法

    function getLength(something: string | number): number {
        return something.length;
    }
    
    
    // index.ts(2,22): error TS2339: Property 'length' does not exist on type 'string | number'.
    //   Property 'length' does not exist on type 'number'.
    

    而有时候,我们确实需要在还不确定类型的时候就访问其中一个类型的属性或方法,比如:

    function getLength(something: string | number): number {
        if (something.length) {
            return something.length;
        } else {
            return something.toString().length;
        }
    }
    
    // index.ts(2,19): error TS2339: Property 'length' does not exist on type 'string | number'.
    //   Property 'length' does not exist on type 'number'.
    // index.ts(3,26): error TS2339: Property 'length' does not exist on type 'string | number'.
    //   Property 'length' does not exist on type 'number'.
    

    上例中,获取 something.length 的时候会报错。此时可以使用类型断言,将 something 断言成 string:

    function getLength(something: string | number): number {
        if ((<string>something).length) {
            return (<string>something).length;
        } else {
            return something.toString().length;
        }
    }
    
    // 或
    
    function getLength(something: string | number): number {
        if ((something as string).length) {
            return (something as string).length;
        } else {
            return something.toString().length;
        }
    }
    

    注意:类型断言不是类型转换,断言成一个联合类型中不存在的类型是不允许的:

    function toBoolean(something: string | number): boolean {
        return <boolean>something;
    }
    
    // index.ts(2,10): error TS2352: Type 'string | number' cannot be converted to type 'boolean'.
    // Type 'number' is not comparable to type 'boolean'.
    

    5. 类型推断

    当类型没有给出时,TypeScript 编译器利用类型推断来推断类型。

    如果由于缺乏声明而不能推断出类型,那么它的类型被视作默认的动态 any 类型。

    var num = 2;    // 类型推断为 number
    console.log("num 变量的值为 "+num); 
    num = "12";    // 编译错误
    console.log(num);
    

    第一行代码声明了变量 num 并=设置初始值为 2。 注意变量声明没有指定类型。因此,程序使用类型推断来确定变量的数据类型,第一次赋值为 2,num 设置为 number 类型。

    第三行代码,当我们再次为变量设置字符串类型的值时,这时编译会错误。因为变量已经设置为了 number 类型。

    error TS2322: Type '"12"' is not assignable to type 'number'.
    

    6. 变量作用域

    全局作用域: 全局变量定义在程序结构的外部,它可以在你代码的任何位置使用。

    类作用域: 这个变量也可以称为 字段。类变量声明在一个类里头,但在类的方法外面。 该变量可以通过类的对象来访问。类变量也可以是静态的,静态的变量可以通过类名直接访问。

    局部作用域: 局部变量,局部变量只能在声明它的一个代码块(如:方法)中使用。

    var global_num = 12          // 全局变量
    class Numbers { 
       num_val = 13;             // 实例变量
       static sval = 10;         // 静态变量
       
       storeNum():void { 
          var local_num = 14;    // 局部变量
       } 
    } 
    console.log("全局变量为: "+global_num)  
    console.log(Numbers.sval)   // 静态变量
    var obj = new Numbers(); 
    console.log("实例变量: "+obj.num_val)
    

    如果我们在方法外部调用局部变量 local_num,会报错:

    error TS2322: Could not find symbol 'local_num'.
    

    7. 函数一些规定

    function add(x: number, y: number): number {
        return x + y;
    }
    

    在 TypeScript 函数里,如果我们定义了参数,则我们必须传入这些参数,除非将这些参数设置为可选,可选参数使用问号标识 ?。

    function buildName(firstName: string, lastName?: string) {
        if (lastName)
            return firstName + " " + lastName;
        else
            return firstName;
    }
     
    let result1 = buildName("Bob");  // 正确
    let result2 = buildName("Bob", "Adams", "Sr.");  // 错误,参数太多了
    let result3 = buildName("Bob", "Adams");  // 正确
    

    参数的默认值

    function calculate_discount(price:number,rate:number = 0.50) { 
        var discount = price * rate; 
        console.log("计算结果: ",discount); 
    } 
    calculate_discount(1000) 
    calculate_discount(1000,0.30)
    

    剩余参数:剩余参数语法允许我们将一个不确定数量的参数作为一个数组传入。

    function buildName(firstName: string, ...restOfName: string[]) {
        return firstName + " " + restOfName.join(" ");
    }
      
    let employeeName = buildName("Joseph", "Samuel", "Lucas", "MacKinzie");
    

    函数的最后一个命名参数 restOfName 以 … 为前缀,它将成为一个由剩余参数组成的数组,索引值从0(包括)到 restOfName.length(不包括)。
    例子:

    function addNumbers(...nums:number[]) {  
        var i;   
        var sum:number = 0; 
        
        for(i = 0;i<nums.length;i++) { 
           sum = sum + nums[i]; 
        } 
        console.log("和为:",sum) 
     } 
     addNumbers(1,2,3) 
     addNumbers(10,10,10,10,10)
    

    8. 函数重载
    重载是方法名字相同,而参数不同,每个重载的方法(或者构造函数)都必须有一个独一无二的参数类型列表。

    以下实例定义了参数类型与参数数量不同:

    function disp(s1:string):void; 
    function disp(n1:number,s1:string):void; 
     
    function disp(x:any,y?:any):void { 
        console.log(x); 
        console.log(y); 
    } 
    disp("abc") 
    disp(1,"xyz");
    

    9. 数组声明

    var numlist:number[] = [2,4,6,8]
    var arr_names:number[] = new Array(4);
    var sites:string[] = new Array("Google","Runoob","Taobao","Facebook");
    

    10. 使用 es6 编译

    tsc --target es6 test.ts
    
    展开全文
  • 从Angular库的提取的有用的TSLint规则。 安装 # npm npm i -D ng-tslint # yarn yarn add -D ng-tslint 规则 类列表签名 该规则捕获使用classList情况无法在我们支持的所有浏览器中使用的情况。 强制类型 TSLint...
  • ngrx-tslint规则 有关此库的ESLint版本,请参阅 安装 使用Angular CLI 使用Angular CLI中的ng-add命令进行安装指导。 我们将询问您要启用哪些规则。 ng add ngrx-tslint-rules 使用npm或yarn手动安装 首先使用以下...
  • 将Prettier作为TSLint规则运行,并将差异报告为单个TSLint问题。 样本 a ( ) ; ; ; ~ ~ ; ; ; ~ ~ ~ [ Delete `;;⏎;;;` ] var foo = '' ~ ~ [ Replace `''` with `"";⏎` ] var foo = "" ; ~ [ Insert `·` ]...
  • TSLint 规则

    2020-06-15 19:35:28
    除了在全局配置中使用TSLint规则,还可以在文件中使用TSLint规则。所以在不方便修改全局配置中的TSLint规则时,可以在文件中对TSLint规则进行调整。

    除了在全局配置中使用TSLint规则,还可以在文件中使用TSLint规则。

    当不想修改全局配置中的TSLint规则时,可以在文件中使用以下注释规则标志对TSLint规则进行修改。


    // tslint:disable —— 忽略该行以下所有代码出现的错误提示,可以在文件首行添加达到忽略整个文件的格式提示。


    /* tslint:enable */ —— 为当前文件启动所有规则。


    // tslint:disable-line —— 忽略当前行代码出现的错误提示。


    // tslint:disable-next-line —— 忽略下一行代码出现的错误提示。

    // tslint:disable-next-line:rule1 rule2 rule3 —— 忽略下一行代码中出现的rule1、rule2、rule3。
    (当有多条规则检查需要进行忽略时,多条规则之间用空格隔开)


    展开全文
  • vue+ts的书写规范

    2021-04-02 11:15:42
    什么是ts TypeScript 是 JavaScript 的强类型版本。然后在编译期去掉类型和特有语法,生成纯粹的 JavaScript 代码。由于最终在浏览器中运行的仍然是 JavaScript,所以 TypeScript 并不依赖于浏览器的支持,也并不会...

    什么是ts

    TypeScript 是 JavaScript 的强类型版本。然后在编译期去掉类型和特有语法,生成纯粹的 JavaScript 代码。由于最终在浏览器中运行的仍然是 JavaScript,所以 TypeScript 并不依赖于浏览器的支持,也并不会带来兼容性问题。

    TypeScript 是 JavaScript 的超集,这意味着他支持所有的 JavaScript 语法。并在此之上对 JavaScript 添加了一些扩展,如 class / interface / module 等。这样会大大提升代码的可阅读性。

    声明函数

    private formStatus: string = 'create';
    

    @ 装饰器(替换钩子函数)

    从vue-property-decorator引入相应的装饰器(Component, Prop, Watch…)

    import { Component, Vue, Prop, Watch } from 'vue-property-decorator';
    

    !: 表示强制解析, 告诉ts编辑器一定有值,即非空。

    @Prop({ default: '测试' }) private title!: string;
    
    <script lang="ts">
    import { Component, Prop, Watch, Vue } from "vue-property-decorator";
    import vHead from './header.vue';
    
    @Component({
        components: {
            vHead,
        },
    })
    
    export default class Test extends Vue {
        @Prop({
            type: Object,
            required: false,
            default: {}
        }) formData !: object
    
        @Watch('formData', { immediate: true, deep: true })
        private onFormDatachanged(val: any){
            // console.log(val)
            this.currentId = val.id;
            this.formStatus = val.dialogStatus;
        }
        
        private formStatus: string = 'create';
    };
    </script>
    
    

    检察权代码规范原理

    Typescript是javascript的超集,所以ts在运行之前,得先编译成js,那么这个编译的过程,ts的编译引擎就得知道,文件里包括哪些方法,方法包含哪些参数,各参数的定义是什么,类型是什么,总之,所有源信息必须都知道,才能准确无误的把ts翻译成js。这些东西也正是我们需要的,通过这些信息,我们就可以对比规范和源信息,来确认是否是符合我们制定规范的代码。

    强类型语言的优势在于静态类型检查,静态类型检查可以避免很多不必要的错误, 不用在调试的时候才发现问题.

    Vue 引入 TypeScript

    安装vue的官方插件
    npm i vue-class-component vue-property-decorator --save
    
    // ts-loader typescript 必须安装,其他的相信你以后也会装上的
    npm i ts-loader typescript tslint tslint-loader tslint-config-standard --save-dev
    

    这些库大体的作用,可以按需引入:

    vue-class-component:强化 Vue 组件,使用 TypeScript/装饰器 增强 Vue 组件
    vue-property-decorator:在 vue-class-component 上增强更多的结合 Vue 特性的装饰器
    ts-loader:TypeScript 为 Webpack 提供了 ts-loader,其实就是为了让webpack识别 .ts
    .tsx文件 tslint-loader跟tslint:我想你也会在.ts .tsx文件 约束代码格式(作用等同于eslint)
    tslint-config-standard:tslint 配置 standard风格的约束

    添加 tsconfig.json

    {
      // 编译选项
      "compilerOptions": {
        // 输出目录
        "outDir": "./output",
        // 是否包含可以用于 debug 的 sourceMap
        "sourceMap": true,
        // 以严格模式解析
        "strict": true,
        // 采用的模块系统
        "module": "esnext",
        // 如何处理模块
        "moduleResolution": "node",
        // 编译输出目标 ES 版本
        "target": "es5",
        // 允许从没有设置默认导出的模块中默认导入
        "allowSyntheticDefaultImports": true,
        // 将每个文件作为单独的模块
        "isolatedModules": false,
        // 启用装饰器
        "experimentalDecorators": true,
        // 启用设计类型元数据(用于反射)
        "emitDecoratorMetadata": true,
        // 在表达式和声明上有隐含的any类型时报错
        "noImplicitAny": false,
        // 不是函数的所有返回路径都有返回值时报错。
        "noImplicitReturns": true,
        // 从 tslib 导入外部帮助库: 比如__extends,__rest等
        "importHelpers": true,
        // 编译过程中打印文件名
        "listFiles": true,
        // 移除注释
        "removeComments": true,
        "suppressImplicitAnyIndexErrors": true,
        // 允许编译javascript文件
        "allowJs": true,
        // 解析非相对模块名的基准目录
        "baseUrl": "./",
        // 指定特殊模块的路径
        "paths": {
          "jquery": [
            "node_modules/jquery/dist/jquery"
          ]
        },
        // 编译过程中需要引入的库文件的列表
        "lib": [
          "dom",
          "es2015",
          "es2015.promise"
        ]
      }
    }
    

    类型断言

    有时候你会遇到这样的情况,你会比TypeScript更了解某个值的详细信息。 通常这会发生在你清楚地知道一个实体具有比它现有类型更确切的类型。

    通过类型断言这种方式可以告诉编译器,“相信我,我知道自己在干什么”。 类型断言好比其它语言里的类型转换,但是不进行特殊的数据检查和解构。 它没有运行时的影响,只是在编译阶段起作用。 TypeScript会假设你,程序员,已经进行了必须的检查。

    类型断言有两种形式。 其一是“尖括号”语法:

    let someValue: any = "this is a string";
    
    let strLength: number = (<string>someValue).length;
    

    另一个为as语法:

    let someValue: any = "this is a string";
    
    let strLength: number = (someValue as string).length;
    
    展开全文
  • tslint不可变的 规则禁用TypeScript中的突变。 :warning_selector: TSLint将在2019年的某个时候被弃用。 有关更多详细信息,问题: 。 :rocket: 已经开始在库这些规则移植到新的eslint插件上。 请到那边给它一...
  • TSLint规则,用于检测React Hooks的无效使用
  • 在某些Microsoft项目上使用的一组规则。 注意 该项目处于只读和模式。 安装 npm install tslint-microsoft-contrib --save-dev TSLint和相应的tslint-microsoft-contrib版本 TSLint版本 tslint-microsoft-contrib...
  • TSLint的rxjs规则规则 该存储库提供以下规则规则名称 配置 描述 rxjs-collapse-imports 没有任何 将多个从rxjs导入到单个导入 仅限rxjs-pipeable-operators 没有任何 将副作用操作员迁移到可移植对象 rxjs...
  • TSLint导入组排序规则 强制进口组订购 高度可配置 使用正则表达式配置哪些导入语句进入哪个导入组。 支持确定package.json依赖项(或从node_modules读取所有依赖node_modules ) 有一个自动修复程序 保留评论 ...
  • 什么是ts

    千次阅读 2019-10-13 16:47:53
    只要按照一定的规则去书写js,就能享受到ts带来的好处。 当然因为现在的ts足够强大,并且有自家的vscode保驾护航,才方便了我们这些过去想都不(lan)敢(de)想的苦逼程序员。 js改造成ts的工作量很大程...
  • TSLint JSX必需属性规则 tslint的自定义规则 当JSX元素匹配指定的元素类型或指定的属性时,要求它们包含指定的属性。 npm i -D tslint-jsx-required-attributes tslint.json "rulesDirectory" : [ "node_...
  • NativeScript TSLint规则 该项目包含对NativeScript应用程序有用的tslint规则。 prefer-mapped-imports规则 导入外部模块或ES6导入声明时,建议使用映射路径。 注意:此规则适用于 选件 prefix指定映射的导入的...
  • Typescript 的 d.ts 文件规范

    千次阅读 2019-07-06 21:04:52
    参考:... 0. 仅在 d.ts 文件中使用的,只需要 declare 声明一下 1. 将模块导出为全局变量,使用如下方法 ```` /*~ If this module is a UMD module that exp...
  • @ ptsecurity / tslint-config 安装 安装为 devDependency。... 然后可以在"rules"下启用自定义规则。 { " extends " : [ " @ptsecurity/tslint-config " ], " rules " : { ... } } 贡献 请阅读。 执照
  • 与React&JSX相关的Lint规则。 用法 tslint-react对TSLint和TypeScript具有同级依赖。 要将这些lint规则与默认预设一起使用,请通过extends关键字使用配置继承。 这是一个示例配置,其中tslint.json与node_modules...
  • 带有规则规则TS模糊逻辑系统对一类非线性系统的自适应控制
  • ts排序合并神器

    2019-03-20 22:40:28
    可以根据m3u8文件,将ts文件排序,合并。 使用方法:解压后将exe文件放置于包含ts,m3u8的文件夹,运行,得到bat文件,再双击运行bat文件,得到合并后的新文件。
  • ts标准规范-中文+英文

    2018-08-27 13:54:37
    ts标准规范-中文+英文,介绍ts文件解析
  • 最近学习Python,语法规则、变量等也看完了,但是觉得啥也没记住,打开 py不知道写啥,只能print(“xxx”)(ps:此处手动尴尬)。听说py网络爬取 挺不错就想着,通过爬取网上的电影来增加兴趣吧,找了一些电影...
  • tslint 检查规则

    2017-11-21 11:11:00
    tslint是一个可扩展的静态分析工具,检查 ...它广泛支持在现代编辑和编译系统,可以自定义编码规则,配置,和格式化。 目前写的前端工程都加入了tslint检查,大致了解下这个东东的功能 git 地址:https://github.c...
  • sonarqube代码规则配置

    千次阅读 2021-01-29 17:20:23
    ... ... ...1.修改当前项目配置的缺陷严重程度:可以选择某个bug,进入后在bug详情的质量配置中,点击修改进行严重级别修改,...2.挂起或激活规则:进入项目的质量配置页面,选择对应的问题,点击挂起后,该规则失效 ...
  • TS16949 IAFT第4版认证规则
  • Sugeno型(TS型)模糊推理系统及自适应神经网络的模糊推理系统(anfis)应用Sugeno(TS)型模糊推理系统线性形式1.输出函数f(x1,x2,…)的两种形式2.计算系统输出U的两种方法自适应神经网络的模糊推理系统(anfis...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 34,001
精华内容 13,600
关键字:

ts规则