Поскольку в 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,
}
Но не получается.Это вообще возможно?