typescript - 在 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 : 细绳};
我希望我能让自己明白。
另外,对于那些可以清楚地看到我正在尝试做什么的人,请让我知道您将如何处理这种情况以提出解决方案。
谢谢你们的时间。
解决方案
怎么样
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}
推荐阅读
- ruby-on-rails - 无法将 Rails 6 应用程序上的 TailwindCSS 部署到 Heroku
- python - Django表单翻译中的无效语法错误
- python - cprint (termcolor) 不进行彩色打印
- python - 如何使用列表推导按索引操作数组数据?
- javascript - 材质 UI 和样式化组件覆盖问题
- java - 我有黑色纹理
- netlogo - 如何检查 2 个不同品种的海龟是否在同一个补丁上
- python - 谁能帮我这个?“'scrapy' 一词不被识别为 cmdlet 名称、函数、脚本文件或可运行的程序。”
- swift - 如何正确更新详细视图中的 CoreData 对象?
- angular - StencilJS 拖放