typescript - 获取函数/类构造函数的参数类型

标签 typescript types constructor

我正在尝试做一些我不确定在 TypeScript 中是否可行的事情:从函数中推断参数类型/返回类型。

例如:

function foo(a: string, b: number) {
  return `${a}, ${b}`;
}

type typeA = <insert magic here> foo; // Somehow, typeA should be string;
type typeB = <insert magic here> foo; // Somehow, typeB should be number;

我的用例是尝试创建一个包含构造函数和参数的配置对象。

例如:

interface IConfigObject<T> {
    // Need a way to compute type U based off of T.
    TypeConstructor: new(a: U): T;
    constructorOptions: U;
}

// In an ideal world, could infer all of this from TypeConstructor

class fizz {
    constructor(a: number) {}
}

const configObj : IConfigObj = {
    TypeConstructor: fizz;
    constructorOptions: 13; // This should be fine
}

const configObj2 : IConfigObj = {
    TypeConstructor: fizz;
    constructorOptions: 'buzz'; // Should be a type error, since fizz takes in a number
}

最佳答案

Typescript 现在有 ConstructorParameters 内置函数,类似于 Parameters 内置函数。确保传递的是类类型,而不是实例:

ConstructorParameters<typeof SomeClass>

ConstructorParameter Official Doc

Parameters Official Doc

关于typescript - 获取函数/类构造函数的参数类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43481518/

相关文章:

HTML5 本地存储和变量类型

javascript - 在javascript中添加一个对象和一个数组的结果是什么?

C++,静态对象的构造函数中的异常绕过先前静态对象的析构函数

node.js - 什么 TypeScript 配置产生最接近 Node.js 16 功能的输出?

javascript - 错误 : Property 'modalStack' does not exist on type 'NgxSmartModalService' . 您的意思是 '_modalStack' 吗?

typescript - 如何根据通用输入类型返回类型?

types - nullptr 的强类型化?

java :Setter Getter and constructor

java - Ap 计算机科学 Java 接口(interface)和 Compare 方法困境

angular - 类型 'controls' 上不存在属性 'AbstractControl' Angular 4