【发布时间】:2021-12-28 19:30:34
【问题描述】:
需要描述如下结构的接口
interface Message {
type: <any string const such as const STR_CONST = 'lalala' as const>;
payload: <any object>
}
对于目前未知的消息 - 在库中使用
它应该验证像 Messages 这样的消息:
const READY = 'READY' as const;
function getReady(ready: boolean) {
return {
type: READY,
payload: {
ready
}
}
}
type Messages = ReturnType<typeof getReady> | <...other type>;
【问题讨论】:
-
“任何字符串常量” -
type: string和“任何对象” -payload: any?你能澄清一下你在这里遇到了什么问题吗?另请注意,第一行的as const完全没有意义——类型已经推断为'READY',因为它是const。 -
类型:字符串 类型:字符串常量
-
假设您的实际意思是string literal type,那么:如果您有更具体的类型,请务必使用它。但同样不清楚实际问题是什么。你认为什么应该是通用的?类型参数来自哪里?
-
声明阶段的模块不知道具体会用到哪些类型,所以请问如何用泛型来描述
-
我只能建议阅读typescriptlang.org/docs/handbook/2/generics.html。也许您希望从某事中推断出
payload: T,但不清楚您要解决什么问题,并且您似乎没有尝试使 anything 通用。
标签: typescript generics