当前位置: 首页 > 科技观察

比如Typescript的tsconfig.json

时间:2023-03-21 11:19:43 科技观察

如果没有配置装饰器就会报这个错。对装饰器的实验性支持是一项功能,在未来的版本中可能会发生变化。在“tsconfig”或“jsconfig”中设置“experimentalDecorators”选项以删除此警告;解决Typescript报Cannotredeclareblock-scopedvariable的错误,还需要配置tsconfig.json文件的“lib”:[“es2015”]本文主要介绍两点:运行tsconfig.jsontsconfig.json参数配置运行tsconfig.json我们可以通过tsc--init生成tsconfig.json文件,那么如何运行我们生成的tsconfig.json[1]配置文件呢?当我们直接输入tsc或tsc-ptsconfig.json时,会默认调用tsconfig.json;当在命令行上指定输入文件时,tsconfig.json文件将被忽略。这种情况下,只能通过命令输入配置来运行,这也是为什么明明配置了tsconfig.json,却没有生效的原因。例如:$tscindex3.ts--tes5--experimentalDecorators监控ts文件的变化,可以使用tsc-w,更多说明,在命令行输入tsc--help查看tsconfig的参数.json配置tsconfig.json文件参数很多,有时候不知道是什么意思,有什么作用,下次遇到还是不知道。这里有一张表格,方便使用时参考。选项描述incremental启动增量编译目标指定ECMAScript目标版本“ES3”(默认)、“ES5”、“ES6”/“ES2015”、“ES2016”、“ES2017”或“ESNext”。module指定用于代码生成的模块:“None”、“CommonJS”、“AMD”、“System”、“UMD”、“ES6”或“ES2015”。只有“AMD”与“System”--outFile一起使用。当目标输出为“ES5”或更低版本时,可以使用“ES6”和“ES2015”。lib编译时需要导入的库文件列表。可能的值有:ES5、ES6、ES2015、ES7、ES2016、ES2017、ES2018、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.Intl,ES2017.SharedMemory,ES2017.String,ES2017.TypedArrays,ES2018.Intl,ES20.Promise,ES2018.RegExp,ESNext.AsyncIterable,ESNext.Array,ESNext.Intl,ESNext.Symbol注意:如果不指定--lib,默认注入的库列表。默认注入的库有:for--targetES5:DOM,ES5,ScriptHost,for--targetES6:DOM,ES6,DOM.Iterable,ScriptHostallowJs允许编译javascript文件checkJs报告.js文件中的错误jsxinJSXis在.tsx文件中支持:“React”、“react-native”或“Preserve”声明生成相应的.d.ts文件declarationMap为每个相应的“.d.ts”文件生成一个sourcemap文件sourceMap生成相应的.map文件outFile将输出文件合并为一个文件outDir重定向输出目录rootDir用于控制输出目录结构composite启用项目编译tsBuildInfoFile指定存放增量编译信息的文件removeComments删除除版权以/!*开头的所有注释信息noEmit不生成输出文件importHelpers从tslib导入辅助函数(如__extends、__rest等)downlevelIteration当以“ES5”或“ES3”为目标时,为“for-of”中的iterables提供全面支持,传播和解构isolatedModules对待每个文件作为一个单独的模块(类似于“ts.transpileModule”)strict启用所有严格类型检查选项noImplicitAny报告带有隐式任何类型的表达式和声明的错误strictNullChecks在严格的空检查模式下,不包括null和undefined值在任何类型中,只允许自己赋值,任何(除了一个例外,undefined可以赋值给void)strictFunctionTypes允许检查函数类型-类的未定义属性已在构造函数中初始化要使这个选项起作用,需要启用--strictNullChecksnoImplicitThis当这个表达式的值为任何类型时,产生一个错误alwaysStrict在严格模式下解析并为每个源文件生成“usestrict”语句noUnusedLocals如果不是所使用的局部变量会抛出错误noUnusedParameters如果有未使用的参数,会抛出错误noImplicitReturns不是所有函数的返回路径都有返回值,会报错noFallthroughCasesInSwitch不允许switch的case语句通过moduleResolution如何解析模块:'node'(Node.js)或'classic'(TypeScriptpre-1.6)baseUrl解析文档目录路径基于baseUrl的模块名称到路径映射的列表rootDirs用于控制输出的目录结构typeRoots类型声明文件路径列表包含类型类型声明文件以包含名称列表allowSyntheticDefaultImports允许从没有默认导出集的模块中进行默认导入。这不影响代码的输出,仅用于类型检查esModuleInterop通过所有导入创建命名空间对象,实现CommonJS和ES模块之间的互操作性preserveSymlinks不解析符号链接的真实路径;将符号链接文件视为真实文件allowUmdGlobalAccess允许从模块访问UMD全局变量sourceRoot指定调试器要定位的TypeScript源文件的路径。在运行时指定TypeScript文件的位置时使用此标志。路径信息将添加到sourceMap中。mapRoot为调试器指定指定源映射文件的路径,而不是使用生成的路径。当.map文件在运行时指定并且与js文件的位置不同时使用此标志。指定的路径将嵌入到sourceMap中,以告诉调试器在哪里可以找到它们。inlineSourceMap生成单个sourcemaps文件,而不是为每个sourcemaps生成不同的文件inlineSources将代码和sourcemaps生成一个文件,需要同时设置--inlineSourceMap或--sourceMap属性experimentalDecorators启动装饰器emitDecoratorMetadata中给出装饰器声明源代码加上设计类型元数据skipLibCheck忽略所有声明文件(*.d.ts)类型检查forceConsistentCasingInFileNames禁止对同一文件使用不一致的引用常用的tsconfig.json配置:{"target":"ES2015","module":"commonjs","sourceMap":true,"outDir":"./script","strict":true,"strictNullChecks":true,"strictFunctionTypes":true,"noImplicitThis":true,"alwaysStrict":true,“noImplicitReturns”:true,“noFallthroughCasesInSwitch”:true,“esModuleInterop":true,"skipLibCheck":true,"forceConsistentCasingInFileNames":true}参考[1]tsconfig:https://www.typescriptlang.org/docs/handbook/tsconfig-json.html