typescript接口:如何实现合并函数接口和属性接口的接口。例如:
interface keyMap {
name: string;
mark: number;
}
let keyMapInstance: keyMap = { name: 'John', mark: 85 }
interface development extends keyMap {
(code: string): void
}

发布于 2018-02-17 13:56:41
问题是,development同时具有调用签名(可以由函数满足)和成员(继承keymap),.You不能在Typescript (或Javascript )中在一个步骤中定义这样的对象。当你给函数赋值时,编译器会报告缺少属性(它应该这样做,因为它们还没有出现)。你可以做以下两件事之一:
使用 Object.assign 在中一步构建对象
var me: development = Object.assign((code: string)=> console.log(code), keyMapInstance)使用类型断言,并在稍后使用完成初始化
var me: development = <development>((code)=> console.log(code))
me.mark = 10;
me.name ="";变体:将字段设置为可选,并在之后完成初始化
interface development extends Partial<keyMap> {
(code: string): void
}
var me: development = (code)=> console.log(code)
me.mark = 10;
me.name ="";发布于 2018-02-17 13:52:09
在development接口中,我相信您正在尝试声明一个接受string参数的void函数。应该这样做:
interface development extends keyMap {
fn: (code: string) => void
}https://stackoverflow.com/questions/48838265
复制相似问题