任何JavaScript代码都是有效的TypeScript代码吗?

68bkxrlz  于 2023-03-09  发布在  TypeScript
关注(0)|答案(3)|浏览(154)

目前我已经开始学习TypeScript了,在学习TypeScript的文档中,我看到了一些纯JavaScript代码可以编译成TypeScript代码的例子。
我的问题是:* * TypeScript语言的设计方式是否确保任何JavaScript代码都是有效的TypeScript代码?**
例如,是否有任何.js文件是有效的.ts文件?

mefy6pfw

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

    • 即使有一个TypeScript错误,这并不阻止一个有效的javascript从那里输出**。它"编译错误"。(我希望这是一个警告,而不是错误,但无论如何)。

另请参阅:https://basarat.gitbooks.io/typescript/content/docs/why-typescript.html

    • 您的JavaScript是类型脚本**

TypeScript为你的JavaScript代码提供了编译时类型安全。这并不奇怪它的名字。最棒的是类型是完全可选的。你的JavaScript代码. js文件可以被重命名为. ts文件,而TypeScript仍然会给你返回有效的. js等价于原始JavaScript文件。TypeScript是有意的,严格的JavaScript的一个超集,带有可选的类型检查。
可以取消激活此行为(即使存在Type错误也输出js)的最简单选项是--noEmitOnError

lmyy7pcs

lmyy7pcs2#

不是任何有效的JavaScript代码都是有效的TypeScript,请参见下面的示例。

var testVar = 4;
testVar = "asdf";

TypeScript给出以下错误:无法将字符串转换为数字。若要使其在TypeScript中工作,请添加“:any”,如下所示。

var testVar: any = 4;
testVar = "asdf"

发生这种情况是因为TypeScript注意到testVar被声明了,并且在声明中它被分配了一个数字,因此它决定它应该保持一个数字。

7lrncoxx

7lrncoxx3#

根据TypeScript规范:存档文档here
语句**“每个JavaScript程序也都是TypeScript程序"。**
暗示如下。
“每个JavaScript程序也是一个TypeScript程序 ,在程序中进行了必要/要求的更改,以便不会显示TypeScript编译器的任何复杂错误/警告”

相关问题