TypeScript 中函数或变量的契约是什么
What is the contract of a function or variable in TypeScript
我是 TypeScript 的新手,在我的机器上安装成功后,我在 TypeScript 的官方文档页面中看到了一句话"Type annotations in TypeScript are lightweight ways to record the intended contract of the function or variable"。
contract 这个词在 TypeScript 中的函数或变量的上下文中解释了什么。
我看的例子是:
function greeter(person: string){
return "Hello, " + person;
}
var user = "Jane User";
document.body.innerHTML=greeter(user);
是否与函数变量person附带的字符串注释有关?
感谢您对此提供任何帮助。
这里是link给官方的documentation
如果你对这种情况下的合同一词感兴趣:正如你可以期望你的雇主根据你的合同在每个月底支付你的工资一样,你可以期望 greeter
将是一个字符串(但是你可以很容易地破坏这个契约)
我会尝试用例子来解释。
这是代码:
function greeter(person: string){
return "Hello, " + person;
}
var user = "Jane User";
document.body.innerHTML=greeter(user);
我们已经从将字符串值传递到 greeter() 函数变为传递数字值。忠于 JavaScript 的动态特性,它并不关心 - 它只是继续并将其转换为字符串以便将其呈现给浏览器。 TypeScript 也很高兴,因为数字可以转换为字符串。
问题是:这不是我想要发生的。我只打算让 greeter 方法接受一个字符串值,但 JavaScript 不允许我表达这个意图。我能保证参数值是字符串的唯一方法是编写代码在运行时检查它 javascript.
这里是 TypeScript "intended contract" 发挥作用的地方。如果我只想传入字符串,我可以通过明确说明值参数是一个字符串来表达。
我是 TypeScript 的新手,在我的机器上安装成功后,我在 TypeScript 的官方文档页面中看到了一句话"Type annotations in TypeScript are lightweight ways to record the intended contract of the function or variable"。
contract 这个词在 TypeScript 中的函数或变量的上下文中解释了什么。
我看的例子是:
function greeter(person: string){
return "Hello, " + person;
}
var user = "Jane User";
document.body.innerHTML=greeter(user);
是否与函数变量person附带的字符串注释有关?
感谢您对此提供任何帮助。
这里是link给官方的documentation
如果你对这种情况下的合同一词感兴趣:正如你可以期望你的雇主根据你的合同在每个月底支付你的工资一样,你可以期望 greeter
将是一个字符串(但是你可以很容易地破坏这个契约)
我会尝试用例子来解释。 这是代码:
function greeter(person: string){
return "Hello, " + person;
}
var user = "Jane User";
document.body.innerHTML=greeter(user);
我们已经从将字符串值传递到 greeter() 函数变为传递数字值。忠于 JavaScript 的动态特性,它并不关心 - 它只是继续并将其转换为字符串以便将其呈现给浏览器。 TypeScript 也很高兴,因为数字可以转换为字符串。
问题是:这不是我想要发生的。我只打算让 greeter 方法接受一个字符串值,但 JavaScript 不允许我表达这个意图。我能保证参数值是字符串的唯一方法是编写代码在运行时检查它 javascript.
这里是 TypeScript "intended contract" 发挥作用的地方。如果我只想传入字符串,我可以通过明确说明值参数是一个字符串来表达。