typescript接口:如何实现合并函数接口和属性接口的接口

时间:2018-02-17 05:40:22

标签: typescript interface implements

typescript接口:如何实现合并功能接口和属性接口的接口。例如:

|                   DT | FLAG | IS_PREV_DT_FLAG_ZERO |
|----------------------|------|----------------------|
| 2018-01-01T00:00:00Z |    1 |                    0 |
| 2018-01-02T00:00:00Z |  0.5 |                    0 |
| 2018-01-03T00:00:00Z |    3 |                    0 |
| 2018-01-06T00:00:00Z |    9 |                    0 |
| 2018-01-08T00:00:00Z |    0 |                    0 |
| 2018-01-11T00:00:00Z |    7 |                    1 |
| 2018-01-14T00:00:00Z |   12 |                    0 |

error message

2 个答案:

答案 0 :(得分:1)

问题是development同时具有调用签名(可以由函数满足)和成员(来自继承keymap)。您无法在一个中定义这样的对象在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 ="";

答案 1 :(得分:0)

development界面中,我相信您正在尝试声明一个带有void参数的string函数。应该这样做:

interface development extends keyMap {
  fn: (code: string) => void
}

demo