如何在 TypeScript 接口中实现一个方法?
interface Bar
{
num: number;
str: string;
fun?(): void;
}
class Bar
{
fun?()
{
console.log(this.num, this.str);
}
}
let foo: Bar = {num: 2, str: "B"};
foo.fun();
预期结果: 2 B
实际情况:
错误
无法调用可能是 'undefined' 的对象。ts(2722)
如果从方法 fun()
中省略可选标志,则错误将为:
类型 '{ num: number; str: string; }' 中缺少属性 'fun',但类型 'Bar' 中需要.ts(2741)
更新1
这是一个解决方法,可以得到预期结果,但看起来不像正确的方法。
if(foo.fun)
{
foo.fun();
}