我很困惑为什么程序员在个别范围内宣布课程。
实施例
result: boolean = false
public generateRand(x): void { }
这也类似于
result = false
public generateRand(x) { }
**与其他声明相同。
这些声明背后的原因是什么?这是编程或OOP的正确练习(由于我不能很好地掌握它,所以不确定这一点)?
答案 0 :(得分:2)
主要原因是静态打字
Javascript是一种动态类型语言。也就是说,在运行时推断变量的类型。如果开发人员在变量中输入了错误的类型,这会给开发人员带来麻烦(例如:将字符串放在一个数字应该是的位置)
TypeScript通过在代码中定义变量的类型来避免这些错误。因此,任何尝试放置不同类型的值(示例,字符串在数字中)都将导致错误。它还有助于代码完成,因为它知道返回的是什么类型的值。
但这些类型仅存在于源中。在编译的JS中,没有它们的痕迹。
干杯!
答案 1 :(得分:2)
你是对的。您不应在该特定示例中声明类型,因为该类型已通过Type Inference
确认但是,您需要考虑将类型声明为没有初始值的变量,并且您明确希望这些变量存储某种类型的值:
isActive: boolean;
errorMessage: string;
在以下情况下有所帮助:
1.您希望在开发周期中更快地检测到与类型相关的错误。例如,如果省略类型,则此代码可能会产生意外错误:
isActive: any;
...
this.isActive = "false";
...
if (!this.isActive) {
// this will not happen
}
答案 2 :(得分:2)
TypeScript是JavaScript的超集 - 这意味着TypeScript是JavaScript +更多,其中 more 部分是类型注释。
TypeScript具有.ts扩展名。您可以通过运行以下命令来编译TypeScript:
tsc greeter.ts
类型注释可为您提供类型安全性。也就是说,当编译typescript时,编译器会查看静态类型,并确保函数或变量契约在编译脚本时有效。否则,编译器会在类型或协定不兼容时进行投诉。
示例强>
function greeter(person: string) {
return "Hello, " + person;
}
var user = "Jane User";
document.body.innerHTML = greeter(user);
函数greeter需要一个字符串作为参数。此代码在synatically有效,并且很高兴编译时没有编译时错误。
另一方面,如果传递了错误的类型(例如数组):
function greeter(person: string) {
return "Hello, " + person;
}
var user = [0, 1, 2];
document.body.innerHTML = greeter(user);
编译脚本时会显示错误:
greeter.ts(7,26): Supplied parameters do not match any signature of call target