详解什么是TypeScript里的Constructor signature

 更新时间:2023年07月27日 14:35:08   作者:JerryWang_汪子熙  
这篇文章主要介绍了什么是TypeScript里的Constructor signature详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

Constructor signature

TypeScript 官方文档里关于 Constructor signature 只有这短短的一段话:

JavaScript functions can also be invoked with the new operator. TypeScript refers to these as constructors because they usually create a new object. You can write a construct signature by adding the new keyword in front of a call signature:

JavaScript 函数也可以使用 new 运算符调用。 TypeScript 将这些称为构造函数,因为它们通常会创建一个新对象。

编写构造签名

您可以通过在调用签名前添加 new 关键字来编写构造签名:

type SomeConstructor = {
  new (s: string): SomeObject;
};
function fn(ctor: SomeConstructor) {
  return new ctor("hello");
}

但这个例子还是看得我一头雾水,自己摸索了一下,写了一个例子:

type Jerry = {
    score: number;
}
type SomeConstructor = {
    new(s: number): Jerry;
};
class MyConstructor implements Jerry{
    score: number;
    constructor(score: number){
        this.score = score;
    }
}
function demo(ctor: SomeConstructor, number:number) {
    return new ctor(number);
}
console.log('Ethan:' , demo(MyConstructor, 100));
console.log('Ethan:' , demo(MyConstructor, 200));

定义新的函数类型

下面的代码使用 constructor signature 定义了一个新的函数类型:

接收的输入是 number,输出是自定义类型 Jerry.

如果去掉 new,就是我们已经熟悉的 call signature 语法.

class MyConstructor 实现了 Jerry 类型:

MyConstructor 可以看成 SomeConstructor 的一种具体实现。

这样,凡是输入参数需要传入 SomeConstructor 的地方,我传 MyConstructor 进去,一样能够工作。

demo 在这里相当于工厂函数,我们可以看到,尽管应用代码里没有显式使用 new 关键字,最后还是获得了两个不同的实例:

以上就是详解什么是TypeScript里的Constructor signature的详细内容,更多关于TypeScript Constructor signature的资料请关注脚本之家其它相关文章!

相关文章

  • Manipulation-TypeScript DOM操作示例解析

    Manipulation-TypeScript DOM操作示例解析

    这篇文章主要为大家介绍了DOM Manipulation-TypeScript DOM操作示例解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-03-03
  • TypeScript 泛型接口具体使用实战

    TypeScript 泛型接口具体使用实战

    这篇文章主要为大家介绍了TypeScript 泛型接口具体使用实战,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-07-07
  • TypeScript数据结构之队列结构Queue教程示例

    TypeScript数据结构之队列结构Queue教程示例

    这篇文章主要为大家介绍了TypeScript数据结构之队列结构Queue教程示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-02-02
  • Typescript 转换类型操作索引映射类型IIMT模式学习

    Typescript 转换类型操作索引映射类型IIMT模式学习

    这篇文章主要为大家介绍了Typescript 转换类型操作之索引映射类型IIMT模式学习,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-07-07
  • TypeScript使用noImplicitAny实战解析

    TypeScript使用noImplicitAny实战解析

    这篇文章主要为大家介绍了TypeScript使用noImplicitAny实战解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-08-08
  • 简单三行代码函数实现几十行Typescript类型推导

    简单三行代码函数实现几十行Typescript类型推导

    这篇文章主要为大家介绍了简单三行代码函数实现几十行Typescript类型推导的方案示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-01-01
  • ts 类型体操 Chainable Options 可链式选项示例详解

    ts 类型体操 Chainable Options 可链式选项示例详解

    这篇文章主要为大家介绍了ts 类型体操 Chainable Options 可链式选项示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-09-09
  • TypeScript中的函数重载示例分析

    TypeScript中的函数重载示例分析

    这篇文章主要为大家介绍了TypeScript中的函数重载示例分析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-08-08
  • typescript type类型使用梳理总结

    typescript type类型使用梳理总结

    这篇文章主要为大家介绍了typescript type类型使用梳理总结,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-08-08
  • Typescript装饰器AOP示例详解

    Typescript装饰器AOP示例详解

    这篇文章主要为大家介绍了Typescript装饰器AOP示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-12-12

最新评论