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
子站问答
访问
宣传栏