TS 如何声明函数对象?

例如:

interface A {
  (a: number): number
}

interface B extends A {
  b: string
}

const X: B = (a) => {
  return a
}

X(1)
X.b = 'x'

请问如何创建符合 B 接口约定的对象呢?

阅读 11.1k
2 个回答

https://www.typescriptlang.or...
Hybrid Types

interface A {
    (a: number): number
}

interface B extends A {
    b: string
}
function getB(): B {
    var b = <B>function (a) {
        return a
    };
    b.b = 'x';
    return b;
}
const x = getB();

官方的例子用的是强制类型转换

const x: B = Object.assign(
  (a: number) => a,
  {
    b: "string"
  }
)
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
logo
Microsoft
子站问答
访问
宣传栏