【问题标题】:What is the contract of a function or variable in TypeScriptTypeScript 中函数或变量的契约是什么
【发布时间】:2016-07-24 17:58:09
【问题描述】:

我是 TypeScript 的新手,在我的机器上成功安装后,我在 TypeScript 的官方文档页面中看到了“TypeScript 中的类型注释是记录函数或变量的预期契约的轻量级方法”这句话。

contract 这个词在 TypeScript 中的函数或变量的上下文中是什么意思。

我看过的例子是:

function greeter(person: string){
   return "Hello, " + person;
}

var user = "Jane User";

document.body.innerHTML=greeter(user);

和函数变量person附加的字符串注解有关系吗?

对此的任何帮助表示赞赏。

这里是官方documentation的链接

【问题讨论】:

    标签: javascript typescript contract


    【解决方案1】:

    如果您对这种上下文中的合同一词感兴趣:就像您可以期望雇主根据您的合同在每个月底支付您的工资一样,您可以期望greeter 的论点将是字符串(但是你可以很容易地破坏这个合同)

    【讨论】:

    • 啊,这很有道理。
    【解决方案2】:

    我将尝试使用示例进行解释。 代码如下:

    function greeter(person: string){
       return "Hello, " + person;
    }
    
    var user = "Jane User";
    
    document.body.innerHTML=greeter(user);
    

    我们已经从将字符串值传递给 greeter() 函数到传递一个数字值。忠实于 JavaScript 的动态特性,它并不关心 - 它只是继续并将其转换为字符串以便将其呈现给浏览器。 TypeScript 也很高兴,因为数字可以转换为字符串。

    这就是问题所在:这不是我打算发生的。我只打算让 greeter 方法接受一个字符串值,但 JavaScript 不允许我表达这种意图。我可以保证参数值是字符串的唯一方法是编写代码在运行时在 javascript 中检查它。

    这就是 TypeScript 的“预期合同”发挥作用的地方。如果我只想传入字符串,我可以明确地说 value 参数是一个字符串。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-04-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多