详解什么是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的资料请关注脚本之家其它相关文章!

相关文章

  • 详解什么是TypeScript里的Constructor signature

    详解什么是TypeScript里的Constructor signature

    这篇文章主要介绍了什么是TypeScript里的Constructor signature详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-07-07
  • 基于tsup打包TypeScript实现过程

    基于tsup打包TypeScript实现过程

    这篇文章主要为大家介绍了基于tsup打包TypeScript实现过程详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-12-12
  • TypeScript实现十大排序算法之冒泡排序示例详解

    TypeScript实现十大排序算法之冒泡排序示例详解

    这篇文章主要为大家介绍了TypeScript实现十大排序算法之冒泡排序示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-02-02
  • typescript在vue中的入门案例代码demo

    typescript在vue中的入门案例代码demo

    这篇文章主要介绍了typescript在vue中的入门案例代码demo,使用技术栈vue2+typescript+scss入门练手项目,天气预报demo,需要的朋友可以参考下。
    2022-12-12
  • Three.js 粗糙度贴图与金属度贴图使用介绍

    Three.js 粗糙度贴图与金属度贴图使用介绍

    这篇文章主要为大家介绍了Three.js 粗糙度贴图与金属度贴图使用介绍,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-12-12
  • TypeScript保姆级基础教程

    TypeScript保姆级基础教程

    这篇文章主要为大家介绍了TypeScript保姆级基础教程示例详解,主要为大家介绍了typescript的类型,函数,对象,接口等基础示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助
    2022-07-07
  • Typescript extends 关键字继承类型约束及条件类型判断实现示例解析

    Typescript extends 关键字继承类型约束及条件类型判断实现示例解析

    这篇文章主要介绍了Typescript extends 关键字继承类型约束及条件类型判断实现示例解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-08-08
  • TypeScript中的联合类型使用示例详解

    TypeScript中的联合类型使用示例详解

    这篇文章主要为大家介绍了TypeScript中的联合类型使用示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-08-08
  • Rollup 简易入门示例教程

    Rollup 简易入门示例教程

    这篇文章主要为大家介绍了Rollup 简易入门示例教程,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-02-02
  • TypeScript逆变之条件推断和泛型的应用示例详解

    TypeScript逆变之条件推断和泛型的应用示例详解

    这篇文章主要为大家介绍了TypeScript逆变之条件推断和泛型的应用示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-09-09

最新评论