【问题标题】:Is it possible to use a string value to refer to a type in Typescript是否可以使用字符串值来引用 Typescript 中的类型
【发布时间】:2021-11-02 12:09:10
【问题描述】:

例如,我有一系列描述系统中实体的接口:

interface Company {
  name: string
}

interface Employee {
  firstName: string
  lastName: string
}

我想要一个通用函数来获取这些实体,其中接口名称可以作为字符串值传递。

const company = findOne('Company', 1)
const employee = findOne('Employee', 2)

是否可以为findOne 函数添加动态返回类型,以便在上面的示例中,companyemployee 被编译器称为CompanyEmployee 的实例?

【问题讨论】:

标签: typescript


【解决方案1】:

为此,您可以创建一个接口映射类型并推断您的第一个参数:

interface Company {
  name: string
}

interface Employee {
  firstName: string
  lastName: string
}

type InterfaceMap = {
  Company: Company,
  Employee: Employee,
}

function findOne<Name extends keyof InterfaceMap>(name: Name, num: number): InterfaceMap[Name] {
  return null as any
}

const company = findOne('Company', 1) //  Company
const employee = findOne('Employee', 2) //  Employee

Playground

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-07-22
    • 2010-11-07
    • 2017-09-14
    • 2019-12-10
    • 1970-01-01
    • 2019-12-09
    • 1970-01-01
    • 2021-10-27
    相关资源
    最近更新 更多