【发布时间】:2017-10-12 15:42:54
【问题描述】:
似乎有两种方法可以在 Typescript 的接口中声明命名函数:
export interface Zoo {
foo(): string
readonly bar: () => string,
}
两个问题:
- foo 和 bar 函数有什么区别?
- 为什么只有 bar 可以有 readonly 修饰符?
更新:
这是一个更长的例子:
export interface Zoo {
foo(): string
readonly bar: () => string,
}
export const x: Zoo = {
foo: () => "a",
bar: () => "a",
};
x.foo = () => "b"; // No error
x.bar = () => "b"; // Error: Cannot assign to "bar"
在我看来,两种声明方式都是等价的,只是第二种方式可以设为只读。
我还发现 this 较早的答案说它们是等效的,除了可能超载。
【问题讨论】:
标签: typescript