typescript配置文档、自动编译 及 搭配 vue 使用

2022-08-12 09:37:11

tsconfig.json 配置文档

{// ..."compilerOptions":{"incremental":true,// TS编译器在第一次编译之后会生成一个存储编译信息的文件,第二次编译会在第一次的基础上进行增量编译,可以提高编译的速度"tsBuildInfoFile":"./buildFile",// 增量编译文件的存储位置"diagnostics":true,// 打印诊断信息"target":"ES5",// 目标语言的版本"module":"CommonJS",// 生成代码的模板标准"outFile":"./app.js",// 将多个相互依赖的文件生成一个文件,可以用在AMD模块中,即开启时应设置"module": "AMD","lib":["DOM","ES2015","ScriptHost","ES2019.Array"],// TS需要引用的库,即声明文件,es5 默认引用dom、es5、scripthost,如需要使用es的高级版本特性,通常都需要配置,如es8的数组新特性需要引入"ES2019.Array","allowJS":true,// 允许编译器编译JS,JSX文件"checkJs":true,// 允许在JS文件中报错,通常与allowJS一起使用"outDir":"./dist",// 指定输出目录"rootDir":"./",// 指定输出文件目录(用于输出),用于控制输出目录结构"declaration":true,// 生成声明文件,开启后会自动生成声明文件"declarationDir":"./file",// 指定生成声明文件存放目录"emitDeclarationOnly":true,// 只生成声明文件,而不会生成js文件"sourceMap":true,// 生成目标文件的sourceMap文件"inlineSourceMap":true,// 生成目标文件的inline SourceMap,inline SourceMap会包含在生成的js文件中"declarationMap":true,// 为声明文件生成sourceMap"typeRoots":[],// 声明文件目录,默认时node_modules/@types"types":[],// 加载的声明文件包"removeComments":true,// 删除注释"noEmit":true,// 不输出文件,即编译后不会生成任何js文件"noEmitOnError":true,// 发送错误时不输出任何文件"noEmitHelpers":true,// 不生成helper函数,减小体积,需要额外安装,常配合importHelpers一起使用"importHelpers":true,// 通过tslib引入helper函数,文件必须是模块"downlevelIteration":true,// 降级遍历器实现,如果目标源是es3/5,那么遍历器会有降级的实现"strict":true,// 开启所有严格的类型检查"alwaysStrict":true,// 在代码中注入'use strict'"noImplicitAny":true,// 不允许隐式的any类型"strictNullChecks":true,// 不允许把null、undefined赋值给其他类型的变量"strictFunctionTypes":true,// 不允许函数参数双向协变"strictPropertyInitialization":true,// 类的实例属性必须初始化"strictBindCallApply":true,// 严格的bind/call/apply检查"noImplicitThis":true,// 不允许this有隐式的any类型"noUnusedLocals":true,// 检查只声明、未使用的局部变量(只提示不报错)"noUnusedParameters":true,// 检查未使用的函数参数(只提示不报错)"noFallthroughCasesInSwitch":true,// 防止switch语句贯穿(即如果没有break语句后面不会执行)"noImplicitReturns":true,//每个分支都会有返回值"esModuleInterop":true,// 允许export=导出,由import from 导入"allowUmdGlobalAccess":true,// 允许在模块中全局变量的方式访问umd模块"moduleResolution":"node",// 模块解析策略,ts默认用node的解析策略,即相对的方式导入"baseUrl":"./",// 解析非相对模块的基地址,默认是当前目录"paths":{// 路径映射,相对于baseUrl// 如使用jq时不想使用默认版本,而需要手动指定版本,可进行如下配置"jquery":["node_modules/jquery/dist/jquery.min.js"]},"rootDirs":["src","out"],// 将多个目录放在一个虚拟目录下,用于运行时,即编译后引入文件的位置可能发生变化,这也设置可以虚拟src和out在同一个目录下,不用再去改变路径也不会报错"listEmittedFiles":true,// 打印输出文件"listFiles":true// 打印编译的文件(包括引用的声明文件)}}

编译相关的都是靠 compilerOptions 设置的

属性名值类型默认值描述
allowJsbooleanfalse编译时,允许有 js 文件
allowSyntheticDefaultImportsbooleanmodule === "system"允许引入没有默认导出的模块
allowUnreachableCodebooleanfalse允许覆盖不到的代码
allowUnusedLabelsbooleanfalse允许未使用的标签
alwaysStrictbooleanfalse严格模式,为每个文件添加 "use strict"
baseUrlstringpath 一同定义模块查找的路径,详细参考这里
charsetstring"utf8"输入文件的编码类型
checkJsbooleanfalse验证 js 文件,与allowJs 一同使用
declarationbooleanfalse生成.d.ts 定义文件
declarationDirstring生成定义文件的存放文件夹(2.0 以上)
diagnosticsbooleanfalse是否显示诊断信息
downlevelIterationbooleanfalsetarget 为 ES5 或 ES3 时,提供对for..of,解构等的支持
emitBOMbooleanfalse在输出文件头添加 utf-8 (BOM)字节标记
emitDecoratorMetadatabooleanfalse详见issue
experimentalDecoratorsbooleanfalse允许注解语法
forceConsistentCasingInFileNamesbooleanfalse不允许不同变量来代表同一文件
importHelpersbooleanfalse引入帮助(2.1 以上)
inlineSourceMapbooleanfalse将 source map 一同生成到输出文件中
inlineSourcesbooleanfalse将 ts 源码生成到 source map 中,需要同时设置inlineSourceMap 或sourceMap
isolatedModulesbooleanfalse将每个文件作为单独的模块
jsxstring"preserve"jsx 的编译方式
jsxFactorystring"React.createElement"定义 jsx 工厂方法,React.createElement 还是h(2.1 以上)
libstring[]引入库定义文件,可以是["es5", "es6", "es2015", "es7", "es2016", "es2017", "esnext", "dom", "dom.iterable", "webworker", "scripthost", "es2015.core", "es2015.collection", "es2015.generator", "es2015.iterable", "es2015.promise", "es2015.proxy", "es2015.reflect", "es2015.symbol", "es2015.symbol.wellknown", "es2016.array.include", "es2017.object", "es2017.sharedmemory", "esnext.asynciterable"](2.0 以上)
listEmittedFilesbooleanfalse显示输入文件名
listFilesbooleanfalse显示编译输出文件名
localestring随系统错误信息的语言
mapRootstring定义 source map 的存放位置
maxNodeModuleJsDepthnumber0检查引入 js 模块的深度,需同allowJs 一同使用
modulestring指定模块生成方式,["commonjs", "amd", "umd", "system", "es6", "es2015", "esnext", "none"]
moduleResolutionstring指定模块解析方式,["classic" : "node"]
newLinestring随系统行位换行符,"crlf" (windows) 或 "lf" (unix)
noEmitbooleanfalse不显示输出
noEmitHelpersbooleanfalse不在输出文件中生成帮助
noEmitOnErrorbooleanfalse出错后,不输出文件
noFallthroughCasesInSwitchbooleanfalseswitch 语句中,每个case 都要有break
noImplicitAnybooleanfalse不允许隐式any,如果true,函数的形参必须带类型,如果叫不出class名的js对象,那就得any,比如(d:any)=>{}
如果false,函数的样子更像js  (d)=>{}
noImplicitReturnsbooleanfalse函数所有路径都必须有显示return
noImplicitThisbooleanfalse不允许this 为隐式any
noImplicitUseStrictbooleanfalse输出中不添加 "use strict"
noLibbooleanfalse不引入默认库文件
noResolvebooleanfalse不编译三斜杠或模块引入的文件
noUnusedLocalsbooleanfalse未使用的本地变量将报错(2.0 以上)
noUnusedParametersbooleanfalse未使用的参数将报错(2.0 以上)
outDirstring定义输出文件的文件夹
outFilestring合并输出到一个文件
pathsobjectbaseUrl 一同定义模块查找的路径,详细参考这里
preserveConstEnumsbooleanfalse不去除枚举声明
prettybooleanfalse美化错误信息
reactNamespacestring"React"废弃。改用jsxFactory
removeCommentsbooleanfalse去除注释
rootDirstring当前目录定义输入文件根目录
rootDirsstring []定义输入文件根目录
skipDefaultLibCheckbooleanfalse废弃。改用skipLibCheck
skipLibCheckbooleanfalse对库定义文件跳过类型检查(2.0 以上)
sourceMapbooleanfalse生成对应的 map 文件
sourceRootstring调试时源码位置
strictbooleanfalse同时开启alwaysStrict,noImplicitAny,noImplicitThis 和strictNullChecks (2.3 以上)
strictNullChecksbooleanfalsenull 检查(2.0 以上)
stripInternalbooleanfalse不输出 JSDoc 注解
suppressExcessPropertyErrorsbooleanfalse不提示对象外属性错误
suppressImplicitAnyIndexErrorsbooleanfalse不提示对象索引隐式 any 的错误
targetstring"es3"输出代码 ES 版本,可以是 ["es3", "es5", "es2015", "es2016", "es2017", "esnext"]
traceResolutionbooleanfalse跟踪模块查找信息
typeRootsstring []定义文件的文件夹位置(2.0 以上)
typesstring []设置引入的定义文件(2.0 以上)
watchbooleanfalse监听文件变更
  1. 在要自动编译 ts 的目录,执行tsc --init 生成 tsconfig.json 文件
  2. 配置输出目标目录
{"compilerOptions":{// 所要输出的目标目录"outDir":"./outDir",}}
  1. 对于 VScode ,点击任务 > 运行任务 > tsc: watch
    在这里插入图片描述
    在这里插入图片描述
  2. 对于 webstrom ,打开 Webstorm,为 TypeScript 文件更改编译设置File->Settings->File Watchers->TypeScript ,这里我们需要选择 TypeScript,但是 File Watchers 下默认是不存在的。需要点击右侧 “+” 号,选择,弹出 New Watcher,设置好圈红线的部分,点击 ok。勾选 “TypeScript”,点击 ok。
    在这里插入图片描述
    在这里插入图片描述

配置信息:

Program:‪C:\Users\chenwei\AppData\Roaming\npm\tsc.cmd
Arguments:--sourcemap --target"ES5"
Output paths to refresh:$FileNameWithoutExtension$.js:$FileNameWithoutExtension$.js.map
Working directory:$FileDir$

最后勾选 enabled ,点击 ok
在这里插入图片描述

vue-cli3 配置 Typescript

vue-property-decorator 用法

  • 作者:肖ZE
  • 原文链接:https://blog.csdn.net/lucky541788/article/details/90706272
    更新时间:2022-08-12 09:37:11