【发布时间】:2019-06-10 17:59:35
【问题描述】:
由于在 JavaScript 中函数也是对象,所以 TypeScript 接口可以同时是(对象和函数),如下所示:
//TS:
interface ITest {
(arg: any): void
field: number
}
let test: ITest = ((arg: any) => { }) as ITest
test.field = 123
test("foo")
test.field = 456
//JS:
var test = (function (arg) { });
test.field = 123;
test("foo");
test.field = 456;
在let test: ITest = 行,它不会抱怨我不遵守接口,因为我对ITest 做了类型断言。但是,我想在一个语句中定义整个对象。比如:
let test: ITest = {
((arg: any) => { }), // Cannot invoke an expression whose type lacks a call signature
field: 123,
}
但它失败了。这甚至可能吗?
【问题讨论】:
标签: typescript interface type-assertion