gpt4 book ai didi

typescript 泛型类作为函数参数

转载 作者:行者123 更新时间:2023-12-05 02:26:00 26 4
gpt4 key购买 nike

我有两个不相关的类和一个与 constructor.name 交互的函数 我不想使用 any 类型。有没有办法可以用 typescript 的方式写下以下内容?我希望 someClass 代表任何类,但我不确定如何编写它。

class MyClass {
//
}

class MyOtherClass {
//
}

const getClassName = (someClass, name = someClass.constructor.name) => {
console.log(someClass)
console.log(someClass.constructor.name)
}

getClassName(MyClass)

最佳答案

您可以为类构造函数定义类型,如下所示:

type ClassConstructor<T> = {
new (...args: any[]): T;
};

const getClassName = (someClass: ClassConstructor<any>) => {
console.log(someClass.name)
}

getClassName(MyClass)
getClassName(MyOtherClass)
// this is a complie error: not a constructor
getClassName(() => 1)
// this is a complie error: instance - not a class
getClassName(new MyClass())

Playground Example

但请注意,类名在生产环境中可能会有所不同:即当您使用 webpack 缩小/丑化您的代码时

关于 typescript 泛型类作为函数参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74099828/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com