我刚开始在Angular 2中学习和开发一个应用程序。我们用于开发的打字稿语言非常有趣,但我对打字稿中的数据类型有疑问。 由于打字稿文件被编译为javascript,如何在javascript中编译数据类型?
例如:
sample.ts
value_a : String;
以上是一个示例typescript文件,它声明了一个String类型的变量。当我们编译这个打字稿文件时,它会被编译成一个javascript文件。现在,如何在javascript文件中定义此变量的数据类型(根据我的知识,您无法在javascript中定义数据类型,它会在您为该变量赋值时自动确定数据类型)。
答案 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