打字稿:在另一个中定义一个原语
Typescript: define a primitive within another
问题是,当我收到 API 的回复时,这是我认为迄今为止处理过的最不一致的回复。无论如何,我想做的是使用 Typescript 提供更多结构。例如:
interface Response {
foo: string
}
我遇到的问题是 EVERYTHING 是一个字符串:foo 可能是 "true"
|| "123"
|| "undefined"
|| "null"
但我知道会有一些价值观存在。所以我知道这个字段将始终是 string
类型,但在该字符串中将是 number
我想创建一个 class 或如下所示的界面:
interface Response {
foo: string<number>
}
因为现在我只在所有内容旁边加上注释,例如:
interface Response {
service: string // string("true")
}
考虑这个例子:
type Primitives = boolean | number | null | undefined
type MakeString<T extends Primitives> = `${T}`
// "undefined" | "null" | `${number}` | "false" | "true"
type Result = MakeString<Primitives>
如果您对T extends any
感到困惑,请参阅distributive-conditional-types
TL;TR
将 T
包装到模板文字字符串中会分配并集。
感谢@Clarity
问题是,当我收到 API 的回复时,这是我认为迄今为止处理过的最不一致的回复。无论如何,我想做的是使用 Typescript 提供更多结构。例如:
interface Response {
foo: string
}
我遇到的问题是 EVERYTHING 是一个字符串:foo 可能是 "true"
|| "123"
|| "undefined"
|| "null"
但我知道会有一些价值观存在。所以我知道这个字段将始终是 string
类型,但在该字符串中将是 number
我想创建一个 class 或如下所示的界面:
interface Response {
foo: string<number>
}
因为现在我只在所有内容旁边加上注释,例如:
interface Response {
service: string // string("true")
}
考虑这个例子:
type Primitives = boolean | number | null | undefined
type MakeString<T extends Primitives> = `${T}`
// "undefined" | "null" | `${number}` | "false" | "true"
type Result = MakeString<Primitives>
如果您对T extends any
TL;TR
将 T
包装到模板文字字符串中会分配并集。
感谢@Clarity