首页 > 解决方案 > 在 Typescript 中构建条件类型

问题描述

我正在尝试构建一个具有 2 个 seq 参数的 curried 函数的东西。第一个是消息名称,第二个是与该特定消息相关的数据。

所以让我们说我有两种类型。

type One = {
  name: "OneMessage";
  data: {
     name: string;
  }
}

type Two = {
  name: "TwoMessage";
  data: {
     lastName: string;
  }
}

genericFN = (message) => (data) => ({message: message, data:data})

当使用 genericFN 时,当我传递消息名称时,假设为 genericFN("TwoMessage"),它会返回一个函数,等待与该消息相关的特定数据,在本例中为 {lastName : 细绳};

我希望我能让自己明白。

另外,对于那些可以清楚地看到我正在尝试做什么的人,请让我知道您将如何处理这种情况以提出解决方案。

谢谢你们的时间。

标签: typescripttypescript-typings

解决方案


怎么样

type Messages = {
    OneMessage: {
        data: {
            name: string
        }
    }
    TwoMessage: {
        data: {
            name: string 
        }
    }
}


const getFunction = <Name extends keyof Messages>  (name:Name) => (data:Messages[Name]["data"]){
    console.log(data)
}

例如:

getFunction("OneMessage")

将返回一个接受的函数

{name:string}

推荐阅读