And*_*ykh 14 javascript typescript
打字稿语言规范说:
每个JavaScript程序也是一个TypeScript程序
现在考虑这段代码:
var i = 5;
i = "five";
Run Code Online (Sandbox Code Playgroud)
这是一个完全有效的javascript,无错误执行.它不是有效的TypeScript,也无法编译.
我对上面引用的语句和代码示例的理解明显不匹配.
您能否澄清一下,在上面给出的示例的上下文中,什么使规范声明成立.
更新
为了解决该陈述不反映程序有效性的论点,让我们这样重写:
每个JavaScript程序也是有效或无效的TypeScript程序
要么
每个JavaScript程序都不一定是有效的TypeScript程序
如果作者想说后者,他们为什么不这么说呢?
Dav*_*ret 13
似乎问的问题似乎是声明如下:
每个JavaScript程序也是一个语义正确的 TypeScript程序
那句话是错误的,但这不是这里所说的.
如果您尝试编译这个语法正确的TypeScript代码...
var i = 5;
i = "five";
Run Code Online (Sandbox Code Playgroud)
...您将收到编译错误,因为它在语义上不正确 - 它将字符串分配给隐式键入数字的变量.但是,由于它在语法上是正确的,.js
除了抛出编译错误之外,编译器仍然会输出具有相同代码的文件.
那么每个JavaScript程序也都是TypeScript程序吗?是的,但这并不意味着您不会遇到编译错误.
旁注:您可以通过指定--noEmitOnError
编译时停止编译器发出错误.
解决更新问题
他们可以做的是通过以下方式扩展:
每个语法正确的JavaScript程序也是一个语法正确的TypeScript程序.
但是,当您在其上下文中查看引用时,您可以看到在段落开头介绍的主要想法已经是关于语法:
TypeScript是JavaScript的语法糖.TypeScript语法是Ecmascript 5(ES5)语法的超集.每个JavaScript程序也是一个TypeScript程序.
因此,也许作者认为说"语法正确"本来就是重复的.
该短语应该在语法级别.代码
var i = 5;
i = "five";
Run Code Online (Sandbox Code Playgroud)
是有效的TypeScript 语法,但由于TypeScript执行的额外检查,将生成编译错误.
基本上该部分说TypeScript是一个扩展,而不是Javascript语法的重新设计(如果这是一件好事,或者不是真的取决于你的观点).