将typescript文件编译为javascript文件:Angular 2

将typescript文件编译为javascript文件:Angular 2,javascript,typescript,Javascript,Typescript,我刚刚开始学习和开发Angular 2中的一个应用程序。我们用于开发的typescript语言非常有趣,但我有一个关于typescript中的数据类型的问题。 既然typescript文件是编译成javascript的,那么数据类型是如何用javascript编译的呢 例如: sample.ts value_a : String; 上面是一个示例typescript文件,它声明了一个String类型的变量。当我们编译这个typescript文件时,它会被编译成一个javascript文件。现在

我刚刚开始学习和开发Angular 2中的一个应用程序。我们用于开发的typescript语言非常有趣,但我有一个关于typescript中的数据类型的问题。 既然typescript文件是编译成javascript的,那么数据类型是如何用javascript编译的呢

例如:

sample.ts
value_a : String;

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

typescript中的类型纯粹由编译器使用,以了解它应该执行哪些限制。您从未为
value\u a
分配过值,因此它在运行时的类型将是
undefined
。如果你说

value_a :string = 'hello';
那么
value\u a
的类型将是
string

当你还在打字的时候,如果你想说

value_a = 4;
编译器会向你抱怨的。但是,一旦处理编译好的javascript,典型的javascript规则就会应用,您可以愉快地将
4
分配给
value\u a



注意:为了完整起见,我应该提到在使用reflect元数据和几个编译器标志时有一些复杂的运行时类型信息机制,但在您了解angular 2之前,这是不清楚的。TLDR需要注意的是,除了正常的javascript之外,在运行时没有任何类型信息。任何你想要的信息你都必须自己锁定到对象上

Typescript数据类型通过为每个变量定义数据类型来简化我们的程序。数据类型的重要性仅在Typescript中。当编译为javascript时,它将
未定义
,无论在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