【发布时间】:2016-12-11 03:48:09
【问题描述】:
我认为接口很少同时具有匿名和命名函数。这是正确的吗?
TypeScript 编译器允许接口同时具有匿名函数和命名函数。
// no error
interface Foo {
(x: number, y: number): number; // anonymous
namedMethod: (z: string, w: string) => string; // named
}
但它似乎不可用。
// badProp is not assignable
const foo1 : Foo = {
badProp(x: number, y: number) { return 1 },
namedMethod(a: string, b: string) { return 'str'; }
}
// syntax error
const foo2 : Foo = {
(x: number, y: number) { return 1 },
namedMethod(a: string, b: string) { return 'str'; }
}
使用any 类型,它可以工作。
const temp: any = function (x: number, y: number) { return 1 };
temp.namedMethod = function (a: string, b: string) { return 'str'; }
const foo3: Foo = temp;
虽然在技术上可以同时使用两者,但接口很少同时具有匿名函数和命名函数。 是这样吗?
【问题讨论】:
-
stackoverflow.com/questions/32043487/… 可能有点不同,但很有用
标签: typescript