目前我已经开始学习TypeScript了,在学习TypeScript的文档中,我看到了一些纯JavaScript代码可以编译成TypeScript代码的例子。我的问题是:* * TypeScript语言的设计方式是否确保任何JavaScript代码都是有效的TypeScript代码?**例如,是否有任何.js文件是有效的.ts文件?
TypeScript
JavaScript
.js
.ts
mefy6pfw1#
假设 * valid code * 表示:就语言规范而言,* 语法正确 *。那么答案是是。在TypeScript Specifications(第二段)中记录:TypeScript是JavaScript的语法糖。TypeScript语法是ECMAScript 2015(ES2015)语法的超集。每个JavaScript程序也是一个TypeScript程序。(着重号是我的)现在,大多数情况下,你不希望基本的JavaScript被"不受控制地"使用,毕竟,这是创建TypeScript语言的首要原因之一!尽管如此,一个有效的JavaScript程序 * 在技术上 * 就是有效的TypeScript。这在规范中可能是出于"向后兼容"的需要,或者更好地说,是出于对ECMAScript的 * supersedence * 的需要以另一个答案为例,Typescript代码
var testVar = 4; testVar = "asdf";
将被转换为完全相同的JavaScript代码(使用所有默认编译器选项)在www.example.comPlayground进行演示Typescriptlang.org playground
另请参阅:https://basarat.gitbooks.io/typescript/content/docs/why-typescript.html
TypeScript为你的JavaScript代码提供了编译时类型安全。这并不奇怪它的名字。最棒的是类型是完全可选的。你的JavaScript代码. js文件可以被重命名为. ts文件,而TypeScript仍然会给你返回有效的. js等价于原始JavaScript文件。TypeScript是有意的,严格的JavaScript的一个超集,带有可选的类型检查。可以取消激活此行为(即使存在Type错误也输出js)的最简单选项是--noEmitOnError
--noEmitOnError
lmyy7pcs2#
不是任何有效的JavaScript代码都是有效的TypeScript,请参见下面的示例。
TypeScript给出以下错误:无法将字符串转换为数字。若要使其在TypeScript中工作,请添加“:any”,如下所示。
var testVar: any = 4; testVar = "asdf"
发生这种情况是因为TypeScript注意到testVar被声明了,并且在声明中它被分配了一个数字,因此它决定它应该保持一个数字。
7lrncoxx3#
根据TypeScript规范:存档文档here语句**“每个JavaScript程序也都是TypeScript程序"。**暗示如下。“每个JavaScript程序也是一个TypeScript程序 ,在程序中进行了必要/要求的更改,以便不会显示TypeScript编译器的任何复杂错误/警告”
3条答案
按热度按时间mefy6pfw1#
假设 * valid code * 表示:就语言规范而言,* 语法正确 *。
那么答案是是。
在TypeScript Specifications(第二段)中记录:
TypeScript是JavaScript的语法糖。TypeScript语法是ECMAScript 2015(ES2015)语法的超集。每个JavaScript程序也是一个TypeScript程序。
(着重号是我的)
现在,大多数情况下,你不希望基本的JavaScript被"不受控制地"使用,毕竟,这是创建TypeScript语言的首要原因之一!
尽管如此,一个有效的JavaScript程序 * 在技术上 * 就是有效的TypeScript。这在规范中可能是出于"向后兼容"的需要,或者更好地说,是出于对ECMAScript的 * supersedence * 的需要
以另一个答案为例,Typescript代码
将被转换为完全相同的JavaScript代码(使用所有默认编译器选项)
在www.example.comPlayground进行演示Typescriptlang.org playground
另请参阅:https://basarat.gitbooks.io/typescript/content/docs/why-typescript.html
TypeScript为你的JavaScript代码提供了编译时类型安全。这并不奇怪它的名字。最棒的是类型是完全可选的。你的JavaScript代码. js文件可以被重命名为. ts文件,而TypeScript仍然会给你返回有效的. js等价于原始JavaScript文件。TypeScript是有意的,严格的JavaScript的一个超集,带有可选的类型检查。
可以取消激活此行为(即使存在Type错误也输出js)的最简单选项是
--noEmitOnError
lmyy7pcs2#
不是任何有效的JavaScript代码都是有效的TypeScript,请参见下面的示例。
TypeScript给出以下错误:无法将字符串转换为数字。若要使其在TypeScript中工作,请添加“:any”,如下所示。
发生这种情况是因为TypeScript注意到testVar被声明了,并且在声明中它被分配了一个数字,因此它决定它应该保持一个数字。
7lrncoxx3#
根据TypeScript规范:存档文档here
语句**“每个JavaScript程序也都是TypeScript程序"。**
暗示如下。
“每个JavaScript程序也是一个TypeScript程序 ,在程序中进行了必要/要求的更改,以便不会显示TypeScript编译器的任何复杂错误/警告”