首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >typescript接口:如何实现合并功能接口和属性接口的接口

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

Stack Overflow用户
提问于 2018-02-17 13:40:22
回答 2查看 78关注 0票数 1

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

代码语言:javascript
复制
interface keyMap {
  name: string;
  mark: number;
}

let keyMapInstance: keyMap = { name: 'John', mark: 85 }

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

EN

回答 2

Stack Overflow用户

发布于 2018-02-17 13:56:41

问题是,development同时具有调用签名(可以由函数满足)和成员(继承keymap),.You不能在Typescript (或Javascript )中在一个步骤中定义这样的对象。当你给函数赋值时,编译器会报告缺少属性(它应该这样做,因为它们还没有出现)。你可以做以下两件事之一:

使用 Object.assign 中一步构建对象

代码语言:javascript
复制
var me: development = Object.assign((code: string)=> console.log(code), keyMapInstance)

使用类型断言,并在稍后使用完成初始化

代码语言:javascript
复制
var me: development = <development>((code)=> console.log(code))
me.mark = 10;
me.name ="";

变体:将字段设置为可选,并在之后完成初始化

代码语言:javascript
复制
interface development extends Partial<keyMap> {
    (code: string): void
}

var me: development = (code)=> console.log(code)
me.mark = 10;
me.name ="";
票数 1
EN

Stack Overflow用户

发布于 2018-02-17 13:52:09

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

代码语言:javascript
复制
interface development extends keyMap {
  fn: (code: string) => void
}

demo

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48838265

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档