参考文档:tsconfig.json · TypeScript中文网 · TypeScript——JavaScript的超集 (tslang.cn)
如果一个目录下存在一个tsconfig.json文件,那么它意味着这个目录是TypeScript项目的根目录。 tsconfig.json文件中指定了用来编译这个项目的根文件和编译选项。
tsconfig.json文件可以是个空文件,那么所有默认的文件都会以默认配置选项编译。
在命令行上指定的编译选项会覆盖在tsconfig.json文件里的相应选项
一个项目可以通过以下方式之一来编译:
tsc,编译器会从当前目录开始去查找tsconfig.json文件,逐级向上搜索父目录。tsc,且使用命令行参数--project(或-p)指定一个包含tsconfig.json文件的目录。tsconfig.json文件会被忽略。{
"extends": "",
"compileOnSave": true,
"compilerOptions": {},
"files": [],
"include": [],
"exclude": [],
"references": []
}
| 配置项 | 说明 |
|---|---|
| extends | 继承配置 |
| compileOnSave | 让IDE在保存文件的时候根据tsconfig.json重新生成文件要想支持这个特性需要Visual Studio 2015, TypeScript1.8.4以上并且安装atom-typescript插件。 |
| compilerOptions | 编译选项,详见compilerOptions |
| files | 指定一个包含相对或绝对文件路径的列表 |
| include | 指定一个文件glob匹配模式列表 |
| exclude | 指定一个文件glob匹配模式列表 |
| references | 一个对象的数组,指明要引用的工程。 每个引用的 path属性都可以指向到包含tsconfig.json文件的目录,或者直接指向到配置文件本身(名字是任意的) |
{
"extends": "",
"compileOnSave": false,
"compilerOptions": { //编译选项
"allowJS": false, // 允许编译器编译JS,JSX文件
"checkJs": false, // 在 .js文件中报告错误。与allowJs配合使用。
"allowSyntheticDefaultImports": false, //允许从没有设置默认导出的模块中默认导入。这并不影响代码的输出,仅为了类型检查。默认值:module === "system" 或设置了 --esModuleInterop 且 module 不为 es2015 / esnext
"allowUnreachableCode": false, //不报告执行不到的代码错误。
"allowUnusedLabels": false, //不报告未使用的标签错误
"alwaysStrict": false, // 在代码中注入'use strict',以严格模式解析并为每个源文件生成 "use strict"语句
"charset": "utf8", //输入文件的字符集
"declaration": false, // 生成声明文件.d.ts,开启后会自动生成声明文件
"declarationDir": "", // 指定生成声明文件存放目录
"diagnostics": false, // 显示诊断信息
"extendedDiagnostics": false, //显示详细的诊段信息
"experimentalDecorators":false,//启用实验性的ES装饰器
"disableSizeLimit": false, //禁用JavaScript工程体积大小的限制
"emitBOM": false, //在输出文件的开头加入BOM头(UTF-8 Byte Order Mark)。
"forceConsistentCasingInFileNames": false, //禁止对同一个文件的不一致的引用
"incremental": true, // TS编译器在第一次编译之后会生成一个存储编译信息的文件,第二次编译会在第一次的基础上进行增量编译,可以提高编译的速度
"isolatedModules":false,//将每个文件作为单独的模块(与“ts.transpileModule”类似)。
"listEmittedFiles": false, //打印出编译后生成文件的名字
"listFiles": false, // 编译过程中打印文件名
"tsBuildInfoFile": "./buildFile", // 增量编译文件的存储位置
"target": "ES5", // 指定ECMAScript目标版本 "ES3"(默认), "ES5", "ES6"/ "ES2015", "ES2016", "ES2017"或 "ESNext"
"module": "CommonJS", // 设置程序的模块系统, "None", "CommonJS", "AMD", "System", "UMD", "ES6"或 "ES2015", "ESNext", "ES2020",只有 "AMD"和 "System"能和 --outFile一起使用,"ES6"和 "ES2015"可使用在目标输出为 "ES5"或更低的情况下。默认值:target === "ES6" ? "ES6" : "commonjs"
"moduleResolution": "node", // 模块解析策略,ts默认用node的解析策略,即相对的方式导入
"jsx":"Preserve",//在 `.tsx`文件里支持JSX: `"React"`或 `"Preserve"`
"jsxFactory":"React.createElement",//指定生成目标为react JSX时,使用的JSX工厂函数,比如 `React.createElement`或 `h`
"newLine": "crlf", //当生成文件时指定行结束符: "crlf"(windows)或 "lf"(unix)。
"noEmit": false, // 不输出文件,即编译后不会生成任何js文件
"noEmitOnError": false, // 发送错误时不输出任何文件
"noErrorTruncation": false, //不截短错误消息
"noFallthroughCasesInSwitch": false, // 防止switch语句贯穿(即如果没有break语句后面不会执行)
"noImplicitAny": false, // 不允许隐式的any类型,在表达式和声明上有隐含的 any类型时报错
"noImplicitReturns": false, //每个分支都会有返回值,不是函数的所有返回路径都有返回值时报错
"noImplicitThis": false, // 不允许this有隐式的any类型
"noImplicitUseStrict": false, //模块输出中不包含 "use strict"指令
"noLib": false, //不包含默认的库文件( lib.d.ts)
"noResolve": false, //不把 /// <reference``>或模块导入的文件加到编译文件列表。
"noEmitHelpers": true, // 不生成helper函数,减小体积,需要额外安装,常配合importHelpers一起使用
"noStrictGenericChecks": false, //禁用在函数类型里对泛型签名进行严格检查
"noUnusedLocals": false, // 若有未使用的局部变量则抛错
"noUnusedParameters": false, // 检若有未使用的函数参数则抛错
"lib": [ //TS需要引用的库,即声明文件,es5 默认引用dom、es5、scripthost,如需要使用es的高级版本特性,通常都需要配置,如es8的数组新特性需要引入"ES2019.Array",
"DOM",
"ES2015",
"ScriptHost",
"ES2019.Array"
],
"outDir": "./dist", // 指定输出目录
"outFile": "./app.js", // 将多个相互依赖的文件生成一个文件,可以用在AMD模块中,即开启时应设置"module": "AMD",
"preserveSymlinks": false, //不把符号链接解析为其真实路径;将符号链接文件视为真正的文件
"preserveWatchOutput": false, //保留watch模式下过时的控制台输出
"removeComments": true, // 删除所有注释,除了以 /!*开头的版权信息
"rootDir": "./", // 指定输出文件目录(用于输出),用于控制输出目录结构
"resolveJsonModule":true,//允许导入扩展名为“.json”的模块
"emitDeclarationOnly": true, // 只生成声明文件,而不会生成js文件
"sourceMap": true, // 生成目标文件的sourceMap文件
"inlineSourceMap": false, // 生成目标文件的inline SourceMap,inline SourceMap会包含在生成的js文件中
"inlineSources": false, // 将代码与sourcemaps生成到一个文件中,要求同时设置了 --inlineSourceMap或 --sourceMap属性
"declarationMap": true, // 为声明文件生成sourceMap
"types": [], // 要包含的类型声明文件名列表
"typeRoots": [], // 声明文件目录,默认时node_modules/@types
"importHelpers": true, // 通过tslib引入helper函数,文件必须是模块(比如 __extends, __rest等)
"downlevelIteration": true, // 降级遍历器实现,如果目标源是es3/5,那么遍历器会有降级的实现
"strict": true, // 启用所有严格类型检查选项。启用 --strict相当于启用 --noImplicitAny, --noImplicitThis, --alwaysStrict, --strictNullChecks和 --strictFunctionTypes和--strictPropertyInitialization
"skipLibCheck": false, //忽略所有的声明文件( *.d.ts)的类型检查
"strictNullChecks": true, // 不允许把null、undefined赋值给其他类型的变量.在严格的 null检查模式下, null和 undefined值不包含在任何类型里,只允许用它们自己和 any来赋值(有个例外, undefined可以赋值到 void)
"strictFunctionTypes": true, // 不允许函数参数双向协变
"strictPropertyInitialization": true, // 确保类的非undefined属性已经在构造函数里初始化。若要令此选项生效,需要同时启用--strictNullChecks
"suppressExcessPropertyErrors": false, //阻止对对象字面量的额外属性检查
"suppressImplicitAnyIndexErrors": false, //阻止 --noImplicitAny对缺少索引签名的索引对象报错
"strictBindCallApply": true, // 严格的bind/call/apply检查
"useDefineForClassFields": true, //详见 https://jkchao.github.io/typescript-book-chinese/new/typescript-3.7.html#usedefineforclassfields-%E6%A0%87%E8%AE%B0%E4%B8%8E-declare-%E5%B1%9E%E6%80%A7%E4%BF%AE%E9%A5%B0%E7%AC%A6
"esModuleInterop": true, // 允许module.exports=xxx 导出,由import from 导入.因为很多老的js库使用了commonjs的导出方式,并且没有导出default属性
"allowUmdGlobalAccess": true, // 允许在模块中全局变量的方式访问umd模块
"baseUrl": "./", // 解析非相对模块的基地址,默认是当前目录
"paths": { // 模块名到基于 baseUrl的路径映射的列表
// 如使用jq时不想使用默认版本,而需要手动指定版本,可进行如下配置
"jquery": [
"node_modules/jquery/dist/jquery.min.js"
]
},
"rootDirs": [
"src",
"out"
], // 将多个目录放在一个虚拟目录下,用于运行时,即编译后引入文件的位置可能发生变化,这也设置可以虚拟src和out在同一个目录下,不用再去改变路径也不会报错
},
"files": [],
"include": [],
"exclude": [],
"references": []
}
"files"指定一个包含相对或绝对文件路径的列表。 "include"和"exclude"属性指定一个文件glob匹配模式列表。 支持的glob通配符有:
*匹配0或多个字符(不包括目录分隔符)?匹配一个任意字符(不包括目录分隔符)**/递归匹配任意子目录
| 配置 | 说明 |
|---|---|
glob 模式里的某部分只包含*或者.* | 仅有支持的文件扩展名被包含在内(.ts, .tsx, .d.ts)allowJs = true 时,还包含 .js 和 .jsx |
不指定"files"和"include" | 编译器默认包含当前目录和子目录下所有的TypeScript文件(.ts, .d.ts 和 .tsx),排除在"exclude"里指定的文件。allowJs = true 时,还包含 .js 和 .jsx |
指定"files"或"include" | 编译器会将它们结合一并包含进来 使用 "include"引入的文件可以使用"exclude"属性过滤然而,通过 "files"属性明确指定的文件却总是会被包含在内,不管"exclude"如何设置任何被 "files"或"include"指定的文件所引用的文件也会被包含进来。 A.ts引用了B.ts,因此B.ts不能被排除,除非引用它的A.ts在"exclude"列表中。 |
"exclude" | 默认情况下会排除node_modules,bower_components,jspm_packages和<outDir>目录 |
在compilerOptions中指定的"outDir" | 永远会被编译器排除,除非你明确地使用"files"将其包含进来(这时就算用exclude指定也没用) |
| 特殊情况 | 编译器不会去引入那些可能做为输出的文件;比如,假设我们包含了index.ts,那么index.d.ts和index.js会被排除在外。 通常来讲,不推荐只有扩展名的不同来区分同目录下的文件 |
{
"compilerOptions": {
"allowJs": true, //允许编译器编译JS,JSX文件
"target": "ES2015", //指定ECMAScript目标版本
"useDefineForClassFields": true,
"module": "ESNext", //设置程序的模块系统
"moduleResolution": "Node", //模块解析策略。默认使用node的模块解析策略
"strict": true, //启用所有严格类型检查选项
"jsx": "preserve", //preserve模式,在preserve模式下生成代码中会保留JSX以供后续的转换操作使用
"sourceMap": true, //生成目标文件的sourceMap文件
"resolveJsonModule": true, //允许导入扩展名为“.json”的模块
"esModuleInterop": false, //允许module.exports=xxx 导出,由import from 导入.因为很多老的js库使用了commonjs的导出方式,并且没有导出default属性
"lib": [ //TS需要引用的库
"ESNext",
"DOM"
],
"forceConsistentCasingInFileNames": true, //禁止对同一个文件的不一致的引用
"allowSyntheticDefaultImports": true, //允许从没有设置默认导出的模块中默认导入
"skipLibCheck": true, //忽略所有的声明文件( *.d.ts)的类型检查
"baseUrl": "./", // 解析非相对模块的基地址,默认是当前目录
"paths": { //模块名到基于 baseUrl的路径映射的列表
"/@/*": [
"src/*"
],
},
"types": [ //要包含的类型声明文件名列表
"vite/client",
"element-plus/global",
]
},
"include": [ //包含的文件
"src/**/*.ts",
"src/**/*.d.ts",
"src/**/*.tsx",
"src/**/*.js",
"src/**/*.jsx",
"src/**/*.vue",
]
}
大约一年前,我决定确保每个包含非唯一文本的Flash通知都将从模块中的方法中获取文本。我这样做的最初原因是为了避免一遍又一遍地输入相同的字符串。如果我想更改措辞,我可以在一个地方轻松完成,而且一遍又一遍地重复同一件事而出现拼写错误的可能性也会降低。我最终得到的是这样的:moduleMessagesdefformat_error_messages(errors)errors.map{|attribute,message|"Error:#{attribute.to_s.titleize}#{message}."}enddeferror_message_could_not_find(obje
在我的Controller中,我通过以下方式在我的index方法中支持HTML和JSON:respond_todo|format|format.htmlformat.json{renderjson:@user}end在浏览器中拉起它时,它会自然地以HTML呈现。但是,当我对/user资源进行内容类型为application/json的curl调用时(因为它是索引方法),我仍然将HTML作为响应。如何获取JSON作为响应?我还需要说明什么? 最佳答案 您应该将.json附加到请求的url,提供的格式在routes.rb的路径中定义。这
我有一个在Linux服务器上运行的ruby脚本。它不使用rails或任何东西。它基本上是一个命令行ruby脚本,可以像这样传递参数:./ruby_script.rbarg1arg2如何将参数抽象到配置文件(例如yaml文件或其他文件)中?您能否举例说明如何做到这一点?提前谢谢你。 最佳答案 首先,您可以运行一个写入YAML配置文件的独立脚本:require"yaml"File.write("path_to_yaml_file",[arg1,arg2].to_yaml)然后,在您的应用中阅读它:require"yaml"arg
我已经在Sinatra上创建了应用程序,它代表了一个简单的API。我想在生产和开发上进行部署。我想在部署时选择,是开发还是生产,一些方法的逻辑应该改变,这取决于部署类型。是否有任何想法,如何完成以及解决此问题的一些示例。例子:我有代码get'/api/test'doreturn"Itisdev"end但是在部署到生产环境之后我想在运行/api/test之后看到ItisPROD如何实现? 最佳答案 根据SinatraDocumentation:EnvironmentscanbesetthroughtheRACK_ENVenvironm
我有一个非常简单的RubyRack服务器,例如:app=Proc.newdo|env|req=Rack::Request.new(env).paramspreq.inspect[200,{'Content-Type'=>'text/plain'},['Somebody']]endRack::Handler::Thin.run(app,:Port=>4001,:threaded=>true)每当我使用JSON对象向服务器发送POSTHTTP请求时:{"session":{"accountId":String,"callId":String,"from":Object,"headers":
之前在培训新生的时候,windows环境下配置opencv环境一直教的都是网上主流的vsstudio配置属性表,但是这个似乎对新生来说难度略高(虽然个人觉得完全是他们自己的问题),加之暑假之后对cmake实在是爱不释手,且这样配置确实十分简单(其实都不需要配置),故斗胆妄言vscode下配置CV之法。其实极为简单,图比较多所以很长。如果你看此文还配不好,你应该思考一下是不是自己的问题。闲话少说,直接开始。0.CMkae简介有的人到大二了都不知道cmake是什么,我不说是谁。CMake是一个开源免费并且跨平台的构建工具,可以用简单的语句来描述所有平台的编译过程。它能够根据当前所在平台输出对应的m
目录前言滤波电路科普主要分类实际情况单位的概念常用评价参数函数型滤波器简单分析滤波电路构成低通滤波器RC低通滤波器RL低通滤波器高通滤波器RC高通滤波器RL高通滤波器部分摘自《LC滤波器设计与制作》,侵权删。前言最近需要学习放大电路和滤波电路,但是由于只在之前做音乐频谱分析仪的时候简单了解过一点点运放,所以也是相当从零开始学习了。滤波电路科普主要分类滤波器:主要是从不同频率的成分中提取出特定频率的信号。有源滤波器:由RC元件与运算放大器组成的滤波器。可滤除某一次或多次谐波,最普通易于采用的无源滤波器结构是将电感与电容串联,可对主要次谐波(3、5、7)构成低阻抗旁路。无源滤波器:无源滤波器,又称
注意:本文主要掌握DCN自研无线产品的基本配置方法和注意事项,能够进行一般的项目实施、调试与运维AP基本配置命令AP登录用户名和密码均为:adminAP默认IP地址为:192.168.1.10AP默认情况下DHCP开启AP静态地址配置:setmanagementstatic-ip192.168.10.1AP开启/关闭DHCP功能:setmanagementdhcp-statusup/downAP设置默认网关:setstatic-ip-routegeteway192.168.10.254查看AP基本信息:getsystemgetmanagementgetmanaged-apgetrouteAP配
1.1.1 YARN的介绍 为克服Hadoop1.0中HDFS和MapReduce存在的各种问题⽽提出的,针对Hadoop1.0中的MapReduce在扩展性和多框架⽀持⽅⾯的不⾜,提出了全新的资源管理框架YARN. ApacheYARN(YetanotherResourceNegotiator的缩写)是Hadoop集群的资源管理系统,负责为计算程序提供服务器计算资源,相当于⼀个分布式的操作系统平台,⽽MapReduce等计算程序则相当于运⾏于操作系统之上的应⽤程序。 YARN被引⼊Hadoop2,最初是为了改善MapReduce的实现,但是因为具有⾜够的通⽤性,同样可以⽀持其他的分布式计算模
我正在使用ruby2.1.0我有一个json文件。例如:test.json{"item":[{"apple":1},{"banana":2}]}用YAML.load加载这个文件安全吗?YAML.load(File.read('test.json'))我正在尝试加载一个json或yaml格式的文件。 最佳答案 YAML可以加载JSONYAML.load('{"something":"test","other":4}')=>{"something"=>"test","other"=>4}JSON将无法加载YAML。JSON.load("