首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么当tsconfig target设置为es5时,instanceof check返回false,而当设置为esnext时,instanceof check返回true?

当tsconfig target设置为es5时,instanceof check返回false,而当设置为esnext时,instanceof check返回true的原因是因为不同的目标设置会影响编译后的JavaScript代码的生成方式。

在TypeScript中,tsconfig.json文件中的target选项用于指定编译后的JavaScript代码的目标版本。当target设置为es5时,TypeScript编译器会将代码转换为符合ES5标准的JavaScript代码。而在ES5中,并没有原生支持类似instanceof操作符的功能,因此在ES5中进行instanceof检查时,会返回false。

然而,当target设置为esnext时,TypeScript编译器会将代码转换为符合ESNext标准的JavaScript代码。ESNext是指ECMAScript的下一个版本,它包含了最新的JavaScript特性和语法。在ESNext中,instanceof操作符可以正确地检查对象的类型,因此在ESNext中进行instanceof检查时,会返回true。

需要注意的是,当将target设置为esnext时,生成的JavaScript代码可能会包含一些ESNext特有的语法和功能,这些功能在一些旧版本的浏览器中可能不被支持。因此,在选择target时,需要根据目标平台的支持情况和项目的需求进行权衡。

推荐的腾讯云相关产品和产品介绍链接地址:

  • 腾讯云函数(云原生无服务器函数计算服务):https://cloud.tencent.com/product/scf
  • 腾讯云云服务器(弹性计算云服务器):https://cloud.tencent.com/product/cvm
  • 腾讯云容器服务(云原生容器化部署与管理服务):https://cloud.tencent.com/product/tke
  • 腾讯云数据库(云原生数据库服务):https://cloud.tencent.com/product/cdb
  • 腾讯云CDN(内容分发网络服务):https://cloud.tencent.com/product/cdn
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Typescript的tsconfig.json

这样的情况下,只能通过命令输入配置来运行,这也是为什么明明配置了tsconfig.json,但是没有生效。...可能的值ES5、ES6、ES2015、ES7、ES2016、ES2017、ES2018、ESNext、DOM、DOM.Iterable、WebWorker、ScriptHost、ES2015.Core...默认注入的库:针对于--target ES5:DOM,ES5,ScriptHost、针对于--target ES6:DOM,ES6,DOM.Iterable,ScriptHost allowJs 允许编译...ES5”或“ ES3”,在“ for-of”,传播和解构中可迭代项提供全面支持 isolatedModules 将每个文件作为单独的模块(与“ts.transpileModule”类似) strict...TypeScript文件的位置是在运行时指定时使用此标记。路径信息会被加到 sourceMap里 mapRoot 调试器指定指定sourcemap文件的路径,不是使用生成的路径。

2.1K30

会写 TypeScript 但你真的会 TS 编译配置吗?

-> target 设置 ES5: 验证 target 降级处理 然后发现在右侧的 dist/index.js 文件中,依然存在 new Map() 、Promise 语法,因此可以得出结论:tsc... esModuleInterop 字段设置 true 时候,上述提到的 allowSyntheticDefaultImports 字段也会自动设置 true。...(11). noEmit noEmit 设置是否输出 js 文件,一般是设置 false,将打包等工作交给 Webpack 等工具。...,抛出错误 "noUnusedParameters": true, // 有未使用的参数,抛出错误 "noImplicitReturns": true, // 并不是所有函数里的代码都有返回...FORCED_COMPILER_OPTIONS 通过英文解释看到,因为需要 TSC 编译获得 JS 产物,所以会将 noEmit 设置 false,也就是 TSC 编译会输出文件,但为什么我们在输出目录却没有看到对应的

3.3K41

去除typescript代码类型

信息 如果想要单纯的取出 ts 的类型,可以设置"target": "ESNext",除了 ts 的一些特殊标准,如 enum,那么生成的 js 代码基本就是原 ts 代码移除类型的代码。...": true, // 启用严格的 null 检查 "noImplicitThis": true, // this 表达式值 any 类型的时候,生成一个错误 "alwaysStrict...,抛出错误 "noUnusedParameters": true, // 有未使用的参数,抛出错误 "noImplicitReturns": true, // 并不是所有函数里的代码都有返回...,如果将esModuleInterop设置 true,同时allowSyntheticDefaultImports 也会自动设置 true,则可以写成后者的形式。...可以通过在 lib 字段中设置"DOM" { "compilerOptions": { "target": "ES5", "lib": ["ES5", "ES6", "DOM"]

2.5K10

tsconfig.json 编译器配置大全

一般来说,项目的 TS 编译器配置全部存储在项目根目录下的 tsconfig.json 文件中 编译器启动,首先会读取 tsconfig.json,以获取有关如何编译项目的说明(例如,要编译哪些源文件...,在哪里存储输出等) 下面介绍常见 tsconfig compilerOptions 的编译选项: 1、target 用于指定编译之后的版本目录 "target": "es5", 2、module 用来指定要使用的模板标准...": true, 9、socuceMap 用来指定编译是否生成. map 文件 "sourceMap": true, 10、outFile 用于指定输出文件合并为一个文件,只有设置 module 的值... target "ES5" 或 "ES3" "for-of" "spread" 和 "destructuring" 中的迭代器提供完全支持 "downlevelIteration": true...编译器会默认认为这个值 any 类型,如果将 noImplicitAny 设为 true, 则如果没有设置明确的类型会报错,默认值 false "noImplicitAny": true, 21、strictNullChecks

1.1K10

TypeScript学习笔记(三)—— 编译选项、声明文件

设置ts代码编译的目标版本 可选值: ES3(默认)、ES5、ES6/ES2015、ES7/ES2016、ES2017、ES2018、ES2019、ES2020、ESNext...sourceMap 是否生成sourceMap 默认值:false 严格检查 strict 启用所有的严格检查,默认值true设置后相当于开启了所有的严格检查...": true, // 启⽤严格的 null 检查 "noImplicitThis": true, // this 表达式值 any 类型的时候,⽣成⼀个错误 "alwaysStrict"...抛出错误 "noUnusedParameters": true, // 有未使⽤的参数,抛出错误 "noImplicitReturns": true, // 并不是所有函数⾥的代码都有返回...6 怪兽的血量 怪兽判定为死亡 图像切换为灰色 全部怪兽死亡后弹出战斗胜利弹窗  7 英雄血量0 弹出战斗失败弹窗 8 点击 退出 弹出是否保存 点击”是”就将当前实例的属性保存到本地存储中

2.3K20

一些你需要掌握的 tsconfig.json 常用配置项

target 支持的值有:es3、es5、es6(也叫 es2015)、es2016 一直到 es2022、然后还有 esnext。没有 es7 这种东西,你得用 es2016。...另外,esnext 指的是当前版本的 TS 编译器支持的最高版本。 这些值是大小写敏感的,可以是 es5ES5,或大小写混杂。 通常来说前端项目会使用 es5。...为此,我们可以用 lib 这个属性来设置需要引入的全局类型声明。 lib 有高层级的:ES5、ES2015、DOM 、ESNEXT、WebWorker、ScriptHost 等。...但如果你想用最新版本的 ES 语法,但希望它能编译成兼容性良好的 ES5,你就要手动设置 lib,像下面这样: "target": "ES5", "lib": [ "DOM", "DOM.Iterable...将 strict 设置 true,会开启一系列的严格的类型检验配置。 比如 strictNullChecks 配置的默认值会变成 true

1.5K10

从 0 到 1 搭建一个企业级前端开发规范

{ "module": "esnext", "target": "esnext", "lib": ["esnext", "dom"], "baseUrl": "...因为 tsconfig.json 中的编译选项仅仅针对代码类型检查,不是代码编译,因此不需要让 TypeScript 生成编译文件 以下是tsconfig.json中一些设置的解释 lib: TS 需要引用的库...,即声明文件,ES5 默认 dom,es5,scripthost allowJs: 允许编译 JS 文件(js,jsx) allowSyntheticDefaultImports: 允许从没有设置默认导出的模块中默认导入...通过在“设置”中勾选“保存进行格式化”选项, 就可以在文件保存使用 Prettier 进行自动格式化 ?...#是否在文件的最后插入一个空行 insert_final_newline = true [*.md] trim_trailing_whitespace = false [Makefile] indent_style

2.8K20

TS 常见问题整理(60多个,持续更新ing)

空值合并运算符:只有左侧表达式结果 `null` 或 `undefined` ,才会返回右侧表达式的结果。通过这种方式可以明确地区分 `undefined、null` 与 `false` 的值。...仅在 num undefined 或者 null ,不可以通过 let num2 = data.num ?? 666; // data.flag false ,可以通过。...相反,你可以通过不设置 checkJs:true 并在 .js 文件顶部添加一个 // @ts-check 注释,让编译器检查当前文件。...', 'ES2018', 'ES2019' or 'ESNEXT'. */ // "target": "es5", /* 指定模块代码的生成方式: 'none', 'commonjs...如果没有指定,默认注入的库文件列表 --target ES5:DOM,ES5,ScriptHost --target ES6:DOM,ES6,DOM.Iterable,ScriptHost

14.6K76

【TypeScript 演化史 — 第十二章】ES5ES3 的生成器和迭代支持及 –checkJS选项下 .js 文件中的错误

使用 for...of 遍历数组 假设咱们现在的tsconfig.json 设置 target es5: { "compilerOptions": { "target": "es5"...以 ES3 或 ES5 目标,TypeScript 编译器将为上述代码生成一个基于索引的for循环的代码: var text = "Booh!"...因为对字符串进行索引将返回该索引处的代码单元(不是代码点),所以生成的for循环将幽灵表情符分解单独的代码单元。 另一方面,字符串迭代协议遍历字符串的每个代码点,这就是两个程序的输出不同的原因。...这是生成的tsconfig.json: { "compilerOptions": { "target": "es5", "downlevelIteration": true,...这可以通过将- checkJs编译器选项设置false并在每个选定文件的顶部添加// @ts-check注释来实现。 如果你想要在大型 JS代码库中逐步引入类型检查,推荐这种方法。

1.9K20

TypeScript 工程化的实践方案

但要注意: 命令行上指定了输入文件tsconfig.json 文件会被忽略。 我们下面会通过代码和案例来具体学习,先创建一个目录 study ,然后在当前目录创建 main.ts 文件。...: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018', 'ES2019' or 'ESNEXT' (最新版本的ES) */.../dist/app.js", /* 将我们的代码合并编译成一个文件(仅在moduleamd或system适用) */ "allowJs": true, /*允许编译 js 文件,默认为false...设置 true ,js 文件会被 tsc 编译,否则不会。一般在项目中 js, ts 混合开发需要设置。..."noEmitOnError": true, /*有错误时不生成编译后的文件,默认为false*/ "alwaysStrict": true, /*是否编译后的js开启严格模式,默认为

77230

【TypeScript 演化史 -- 12】ES5ES3 的生成器和迭代支持及 --checkJS选项下 .js 文件中的错误

使用 for...of 遍历数组 假设咱们现在的tsconfig.json 设置 target es5: { "compilerOptions": { "target": "es5"...以 ES3 或 ES5 目标,TypeScript 编译器将为上述代码生成一个基于索引的for循环的代码: var text = "Booh!...因为对字符串进行索引将返回该索引处的代码单元(不是代码点),所以生成的for循环将幽灵表情符分解单独的代码单元。 另一方面,字符串迭代协议遍历字符串的每个代码点,这就是两个程序的输出不同的原因。...这是生成的tsconfig.json: { "compilerOptions": { "target": "es5", "downlevelIteration": true,...这可以通过将- checkJs编译器选项设置false并在每个选定文件的顶部添加// @ts-check注释来实现。 如果你想要在大型 JS代码库中逐步引入类型检查,推荐这种方法。

1.1K20
领券