编译的打字稿文件到javascript文件:Angular 2

时间:2016-12-30 06:29:59

标签: javascript typescript

我刚开始在Angular 2中学习和开发一个应用程序。我们用于开发的打字稿语言非常有趣,但我对打字稿中的数据类型有疑问。  由于打字稿文件被编译为javascript,如何在javascript中编译数据类型?

例如:

sample.ts
value_a : String;

以上是一个示例typescript文件,它声明了一个String类型的变量。当我们编译这个打字稿文件时,它会被编译成一个javascript文件。现在,如何在javascript文件中定义此变量的数据类型(根据我的知识,您无法在javascript中定义数据类型,它会在您为该变量赋值时自动确定数据类型)。

2 个答案:

答案 0 :(得分:0)

打字稿中的类型纯粹由编译器使用,以了解它应该强制执行哪些限制。您从未为value_a分配值,因此其在运行时的类型为undefined。如果你反而说

value_a :string = 'hello';

然后value_a的类型为string

虽然仍然在打字稿中,但如果你试图说

value_a = 4;

编译器会抱怨你。但是,一旦您处理已编译的JavaScript,典型的JavaScript规则就会适用,您可以愉快地将4分配给value_a

注意:为了完整性,我应该提一下,当使用reflect-metadata和一些编译器标志时,有一些复杂的运行时类型信息机制,但是在你知道更多有关角度2的情况之前这一点是模糊的.TLDR是没有任何类型信息在运行时超出正常的javascript。你想要的任何信息都必须自己固定到物体上。

答案 1 :(得分:0)

Typescript数据类型通过为每个变量定义数据类型来简化我们的程序。数据类型的重要性仅在Typescript中。当编译为javascript时,它将是undefined,无论在Typescript中分配了什么数据类型。当您使用代码中的变量时,您知道它的数据类型是什么,它有助于编码。

如果您在Typescript中编写此代码 -

,请说
value_a : String = "ABC";
value_a : number = 123;

value_a = value_b  //This will throw compile time error in Typescript, But In Javascript, this is fine
相关问题