vue+Typescript初级入门
<div class="cnblogs_code"><pre>Typescript 在前端圈已经逐渐普及,Vue 2.5.0<span style="color: rgba(0, 0, 0, 1)"> 改进了类型声明,使得对 TypeScript 更加友好
不过要想在项目中直接使用 TypeScript仍然需要对项目进行一些改造
PS: 建议使用Visual Studio Code 进行开发
vue</span>-cli 3.0<span style="color: rgba(0, 0, 0, 1)"> 可以直接创建 typescript 项目,不过目前还只有 beta 版,有兴趣的朋友可以尝试一下
一、安装依赖
首先还是用 vue</span>-<span style="color: rgba(0, 0, 0, 1)">cli 生成项目
vue init webpack demo
然后安装必要依赖项:typescript、ts</span>-loader、vue-class-<span style="color: rgba(0, 0, 0, 1)">component
npm install typescript vue</span>-class-component -<span style="color: rgba(0, 0, 0, 1)">D
npm install ts</span>-loader@3.3.1 -<span style="color: rgba(0, 0, 0, 1)">D
上面安装 ts</span>-loader 的时候,指定了版本 3.3.1<span style="color: rgba(0, 0, 0, 1)">
这是因为在写这篇博客的时候(</span>2018-03-14),在安装 ts-loader 的最新版 4.0.1<span style="color: rgba(0, 0, 0, 1)"> 的情况下,启动项目会报错
另外还有几个库可以按需引入:
tslint: 规范 ts 代码,需要配合 tsllint</span>-loader 使用,最好再加上 tslint-config-<span style="color: rgba(0, 0, 0, 1)">standard;
vue</span>-property-decorator:vue-class-<span style="color: rgba(0, 0, 0, 1)">component 的扩展,添加了几个结合 Vue 特性的装饰器(@Emit,@Prop 等);
vuex</span>-class: 在 vue-class-<span style="color: rgba(0, 0, 0, 1)">component 基础上加强了对 vuex 的支持。
二、配置 Webpack
然后修改 .</span>/build/<span style="color: rgba(0, 0, 0, 1)">webpack.base.conf.js 文件:
在 resolve.extension 中添加 ‘.ts’,使引入 ts 文件时不用写 .ts 后缀
复制代码
{
test: </span>/\.tsx?$/<span style="color: rgba(0, 0, 0, 1)">,
loader: </span>'ts-loader'<span style="color: rgba(0, 0, 0, 1)">,
exclude: </span>/node_modules/<span style="color: rgba(0, 0, 0, 1)">,
options: {
appendTsSuffixTo: [</span>/\.vue$/<span style="color: rgba(0, 0, 0, 1)">]
}
}
复制代码
在 module.rules 中添加 webpack 对 ts 文件的解析
三、其他配置
在项目根目录下创建 tsconfig.json 文件:
复制代码
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> tsconfig.json</span>
<span style="color: rgba(0, 0, 0, 1)">{
</span>"compilerOptions"<span style="color: rgba(0, 0, 0, 1)">: {
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 与 Vue 的浏览器支持保持一致</span>
"target": "es5"<span style="color: rgba(0, 0, 0, 1)">,
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 这可以对 `this` 上的数据属性进行更严格的推断</span>
"strict": <span style="color: rgba(0, 0, 255, 1)">true</span><span style="color: rgba(0, 0, 0, 1)">,
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 如果使用 webpack 2+ 或 rollup,可以利用 tree-shake:</span>
"module": "es2015"<span style="color: rgba(0, 0, 0, 1)">,
</span>"moduleResolution": "node"<span style="color: rgba(0, 0, 0, 1)">
}
}
复制代码
完整的 tsconfig.json 配置项可以参考官方文档
在 .</span>/src 目录创建 vue-shim.d.ts 文件,让 ts 识别 .vue 文件:
<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> vue-shim.d.ts</span>
declare module "*.vue"<span style="color: rgba(0, 0, 0, 1)"> {
import Vue from </span>"vue"<span style="color: rgba(0, 0, 0, 1)">;
export </span><span style="color: rgba(0, 0, 255, 1)">default</span><span style="color: rgba(0, 0, 0, 1)"> Vue;
}
四、文件改造
将 src 目录下的所有 js 文件后缀改为 .ts
然后将 webpack 配置文件 .</span>/build/<span style="color: rgba(0, 0, 0, 1)">webpack.base.conf.js 中的入口 entry 修改为 main.ts
改造之后的 ts 文件不会识别 .vue 文件,所以在引入 .vue 文件的时候,需要手动添加 .vue 后缀
在所有 .vue 文件中,都需要在 </span><script> 中添加 lang="ts"<span style="color: rgba(0, 0, 0, 1)"> 标识
要让 TypeScript 正确推断 vue 组件选项中的类型,还需要引入 vue,并使用 Vue.extend 定义组件
至此基本改造已经完成,执行 npm run dev 就能正常启动项目
五、基于类的 Vue 组件改造
上面改造 .vue 文件的时候,只是简单的使用了 Vue.extend 方法,组件内部还是采用原生的 vue 写法
这在实际开发的时候并不能良好的使用 typescript 特性,所以还需要利用 vue</span>-class-<span style="color: rgba(0, 0, 0, 1)">component 继续改造
首先在 tsconfig.json 中添加配置项,然后重启项目
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 允许从没有设置默认导出的模块中默认导入</span>
"allowSyntheticDefaultImports": <span style="color: rgba(0, 0, 255, 1)">true</span><span style="color: rgba(0, 0, 0, 1)">,
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 启用装饰器</span>
"experimentalDecorators": <span style="color: rgba(0, 0, 255, 1)">true</span><span style="color: rgba(0, 0, 0, 1)">
然后改造 .vue 文件的 </span><script><span style="color: rgba(0, 0, 0, 1)"> 部分,以 HelloWorld.vue 为例:
复制代码
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> HelloWorld.vue</span>
<script lang="ts"><span style="color: rgba(0, 0, 0, 1)">
import Vue from </span>'vue'<span style="color: rgba(0, 0, 0, 1)">
import Component from </span>'vue-class-component'
<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> @Component 修饰符注明了此类为一个 Vue 组件</span>
<span style="color: rgba(0, 0, 0, 1)">@Component({})
export </span><span style="color: rgba(0, 0, 255, 1)">default</span><span style="color: rgba(0, 0, 0, 1)"> class Hello extends Vue {
msg: String </span>= 'Welcome to Your Vue.js App'<span style="color: rgba(0, 0, 0, 1)">
}
</span></script>
<span style="color: rgba(0, 0, 0, 1)">复制代码
组件内部不再采用 Vue 的格式,一开始也许不易接受,可以参考官方的迁移示例
复制代码
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> Vue 文件格式示范</span>
<template>
<div>
<input v-model="msg">
<p>prop: {{propMessage}}</p>
<p>msg: {{msg}}</p>
<p>helloMsg: {{helloMsg}}</p>
<p>computed msg: {{computedMsg}}</p>
<button @click="greet">Greet</button>
</div>
</template>
<script><span style="color: rgba(0, 0, 0, 1)">
import Vue from </span>'vue'<span style="color: rgba(0, 0, 0, 1)">
import Component from </span>'vue-class-component'<span style="color: rgba(0, 0, 0, 1)">
@Component({
props: {
propMessage: String
}
})
export </span><span style="color: rgba(0, 0, 255, 1)">default</span><span style="color: rgba(0, 0, 0, 1)"> class App extends Vue {
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> initial data</span>
msg = 123
<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> use prop values for initial data</span>
helloMsg = 'Hello, ' + <span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.propMessage
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> lifecycle hook</span>
<span style="color: rgba(0, 0, 0, 1)">mounted () {
</span><span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.greet()
}
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> computed</span>
<span style="color: rgba(0, 0, 0, 1)">get computedMsg () {
</span><span style="color: rgba(0, 0, 255, 1)">return</span> 'computed ' + <span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.msg
}
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> method</span>
<span style="color: rgba(0, 0, 0, 1)">greet () {
alert(</span>'greeting: ' + <span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.msg)
}
}
</span></script>
<span style="color: rgba(0, 0, 0, 1)">复制代码
六、使用TSlint 规范代码
如果对代码格式有着严格的要求,建议引入 tslint 来规范代码,首先安装以下依赖
npm init tslint tslint</span>-loader tslint-config-standard -<span style="color: rgba(0, 0, 0, 1)">D
然后在 .</span>/build/<span style="color: rgba(0, 0, 0, 1)">webpack.base.conf.js 的 module.rules 中添加规则
{
test: </span>/\.ts$/<span style="color: rgba(0, 0, 0, 1)">,
exclude: </span>/node_modules/<span style="color: rgba(0, 0, 0, 1)">,
enforce: </span>'pre'<span style="color: rgba(0, 0, 0, 1)">,
loader: </span>'tslint-loader'<span style="color: rgba(0, 0, 0, 1)">
}
在项目根目录创建配置文件 tslint.json
复制代码
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> tslint.json</span>
<span style="color: rgba(0, 0, 0, 1)">{
</span>"extends": "tslint-config-standard"<span style="color: rgba(0, 0, 0, 1)">,
</span>"globals"<span style="color: rgba(0, 0, 0, 1)">: {
</span>"require": <span style="color: rgba(0, 0, 255, 1)">true</span><span style="color: rgba(0, 0, 0, 1)">
}
}
复制代码
这时已经可以启动项目了,如果出现了这样的警告
只需要在 main.ts 里面,将实例化的 Vue 赋值给一个对象就好
只是这里的 tslint 校验规则是直接引入的 standard 规范,如果需要自定义
贴一篇网上找的 tslint.json 的配置项说明(来源:http:</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">blog.csdn.net/zw52yany/article/details/78688837)</span>
<span style="color: rgba(0, 0, 0, 1)">
复制代码
extends: 内设配置项名称
rules:规则
{
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">ts专用</span>
adjacent-overload-signatures : <span style="color: rgba(0, 0, 255, 1)">true</span>,<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">Enforces function overloads to be consecutive.</span>
ban-comma-operator:<span style="color: rgba(0, 0, 255, 1)">true</span>, <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">禁止逗号运算符。</span>
ban-type: [<span style="color: rgba(0, 0, 255, 1)">true</span>, ["object","User {} instead."],["string"]] <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">禁止类型</span>
member-access: [<span style="color: rgba(0, 0, 255, 1)">true</span> , "no-public"||"check-accessor"|| "check-constructor" || "check-parameter-property"] ,<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">类成员必须声明 private public ....</span>
member-order: [<span style="color: rgba(0, 0, 255, 1)">true</span>, {order:....}],<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">类声明排序</span>
no-any: <span style="color: rgba(0, 0, 255, 1)">true</span>,<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">不需使用any类型</span>
no-empty-interface:<span style="color: rgba(0, 0, 255, 1)">true</span> <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">禁止空接口 {}</span>
no-import-side-effect: [<span style="color: rgba(0, 0, 255, 1)">true</span>, {"ignore-module": "(\\.html|\\.css)$"}], <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">禁止导入带有副作用的语句</span>
no-inferrable-types:[<span style="color: rgba(0, 0, 255, 1)">true</span>, "ignore-params", "ignore-properties"], <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">不允许将变量或参数初始化为数字,字符串或布尔值的显式类型声明。</span>
no-internal-module:<span style="color: rgba(0, 0, 255, 1)">true</span>, <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">不允许内部模块</span>
no-magic-numbers: [<span style="color: rgba(0, 0, 255, 1)">true</span>,1,2,3], <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">不允许在变量赋值之外使用常量数值。当没有指定允许值列表时,默认允许-1,0和1</span>
no-namespace: [ <span style="color: rgba(0, 0, 255, 1)">true</span>,"allpw-declarations"], <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">不允许使用内部modules和命名空间</span>
no-non-<span style="color: rgba(0, 0, 255, 1)">null</span>-assertion: <span style="color: rgba(0, 0, 255, 1)">true</span> , <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">不允许使用!后缀操作符的非空断言。</span>
no-parameter-reassignment: <span style="color: rgba(0, 0, 255, 1)">true</span>, <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">不允许重新分配参数</span>
no-reference: <span style="color: rgba(0, 0, 255, 1)">true</span>, <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 禁止使用/// <reference path=> 导入 ,使用import代替</span>
no-unnecessary-type-assertion: <span style="color: rgba(0, 0, 255, 1)">true</span>, <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">如果类型断言没有改变表达式的类型就发出警告</span>
no-<span style="color: rgba(0, 0, 255, 1)">var</span>-requires: <span style="color: rgba(0, 0, 255, 1)">true</span>, <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">不允许使用var module = require("module"),用 import foo = require('foo')导入</span>
only-arrow-functions:[<span style="color: rgba(0, 0, 255, 1)">true</span>,"allow-declarations","allow-named-functions"], <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">允许箭头表达式,不需要传统表达式 ; 允许独立的函数声明;允许表达,function foo() {}但不是function() {}</span>
prefer-<span style="color: rgba(0, 0, 255, 1)">for</span>-of:<span style="color: rgba(0, 0, 255, 1)">true</span>,<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">建议使用for(..of)</span>
promise-<span style="color: rgba(0, 0, 255, 1)">function</span>-async: <span style="color: rgba(0, 0, 255, 1)">true</span><span style="color: rgba(0, 0, 0, 1)">, 要求异步函数返回promise
typedef: [</span><span style="color: rgba(0, 0, 255, 1)">true</span>, "call-signature", "parameter", "member-variable-declaration"], <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">需要定义的类型存在</span>
typedef-whitespace: <span style="color: rgba(0, 0, 255, 1)">true</span>, <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">类型声明的冒号之前是否需要空格</span>
unified-signatures: <span style="color: rgba(0, 0, 255, 1)">true</span>, <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">重载可以被统一联合成一个</span>
<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">function 专用</span>
await-promise: <span style="color: rgba(0, 0, 255, 1)">true</span>,<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">警告不是一个promise的await</span>
<span style="color: rgba(0, 0, 0, 1)"> ban: [
</span><span style="color: rgba(0, 0, 255, 1)">true</span><span style="color: rgba(0, 0, 0, 1)">,
</span>"eval"<span style="color: rgba(0, 0, 0, 1)">,
{</span>"name": "$", "message": "please don't"<span style="color: rgba(0, 0, 0, 1)">},
[</span>"describe", "only"<span style="color: rgba(0, 0, 0, 1)">],
{</span>"name": ["it", "only"], "message": "don't focus tests"<span style="color: rgba(0, 0, 0, 1)">},
{
</span>"name": ["chai", "assert", "equal"<span style="color: rgba(0, 0, 0, 1)">],
</span>"message": "Use 'strictEqual' instead."<span style="color: rgba(0, 0, 0, 1)">
},
{</span>"name": ["*", "forEach"], "message": "Use a regular for loop instead."<span style="color: rgba(0, 0, 0, 1)">}
],
curly: </span><span style="color: rgba(0, 0, 255, 1)">true</span>, <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">for if do while 要有括号</span>
forin:<span style="color: rgba(0, 0, 255, 1)">true</span>, <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">用for in 必须用if进行过滤</span>
import-blacklist:<span style="color: rgba(0, 0, 255, 1)">true</span>, <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">允许使用import require导入具体的模块</span>
label-postion: <span style="color: rgba(0, 0, 255, 1)">true</span>, <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">允许在do/for/while/swith中使用label</span>
no-arg:<span style="color: rgba(0, 0, 255, 1)">true</span>, <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">不允许使用 argument.callee</span>
no-bitwise:<span style="color: rgba(0, 0, 255, 1)">true</span>, <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">不允许使用按位运算符</span>
no-conditional-assignmen: <span style="color: rgba(0, 0, 255, 1)">true</span>, <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">不允许在do-while/for/if/while判断语句中使用赋值语句</span>
no-console:<span style="color: rgba(0, 0, 255, 1)">true</span>, <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">不能使用console</span>
no-construct: <span style="color: rgba(0, 0, 255, 1)">true</span>, <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">不允许使用 String/Number/Boolean的构造函数</span>
no-<span style="color: rgba(0, 0, 255, 1)">debugger</span>: <span style="color: rgba(0, 0, 255, 1)">true</span>, <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">不允许使用debugger</span>
no-duplicate-super: <span style="color: rgba(0, 0, 255, 1)">true</span>, <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">构造函数两次用super会发出警告</span>
no-empty:<span style="color: rgba(0, 0, 255, 1)">true</span>, <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">不允许空的块</span>
no-eval: <span style="color: rgba(0, 0, 255, 1)">true</span>, <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">不允许使用eval</span>
no-floating-promises: <span style="color: rgba(0, 0, 255, 1)">true</span>, <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">必须正确处理promise的返回函数</span>
no-<span style="color: rgba(0, 0, 255, 1)">for</span>-<span style="color: rgba(0, 0, 255, 1)">in</span>-array: <span style="color: rgba(0, 0, 255, 1)">true</span>, <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">不允许使用for in 遍历数组</span>
no-implicit-dependencies: <span style="color: rgba(0, 0, 255, 1)">true</span>, <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">不允许在项目的package.json中导入未列为依赖项的模块</span>
no-inferred-empty-object-type: <span style="color: rgba(0, 0, 255, 1)">true</span>, <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">不允许在函数和构造函数中使用{}的类型推断</span>
no-invalid-template-strings: <span style="color: rgba(0, 0, 255, 1)">true</span>, <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">警告在非模板字符中使用${</span>
no-invalid-<span style="color: rgba(0, 0, 255, 1)">this</span>:<span style="color: rgba(0, 0, 255, 1)">true</span>, <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">不允许在非class中使用 this关键字</span>
no-misused-<span style="color: rgba(0, 0, 255, 1)">new</span>: <span style="color: rgba(0, 0, 255, 1)">true</span>, <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">禁止定义构造函数或new class</span>
no-<span style="color: rgba(0, 0, 255, 1)">null</span>-keyword: <span style="color: rgba(0, 0, 255, 1)">true</span>, <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">不允许使用null关键字</span>
no-object-literal-type-assertion:<span style="color: rgba(0, 0, 255, 1)">true</span>, <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">禁止objext出现在类型断言表达式中</span>
no-<span style="color: rgba(0, 0, 255, 1)">return</span>-await:<span style="color: rgba(0, 0, 255, 1)">true</span>, <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">不允许return await</span>
arrow-parens: <span style="color: rgba(0, 0, 255, 1)">true</span>, <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">箭头函数定义的参数需要括号</span>
<span style="color: rgba(0, 0, 0, 1)">}
复制代码</span></pre>
</div>
<p> </p><br><br>
来源:https://www.cnblogs.com/xiaomili/p/10985896.html
頁:
[1]