如何在打字稿中“交叉产品”类型?

Ami*_*war 4 typescript typescript-typings

我想“交叉产品”两种类型。

我所说的“类型的叉积”的意思是,例如我有两种类型,

type color = "red" | "green";
Run Code Online (Sandbox Code Playgroud)

type color = "red" | "green";
Run Code Online (Sandbox Code Playgroud)

我想获得一个仅接受这些字符串值的最终类型

"red.100"
"red.200"
"red.300"
"green.100"
"green.200"
"green.300"
Run Code Online (Sandbox Code Playgroud)

我知道我能做到这一点...

type colorShade = "red.100" | "red.200" | "red.300" | "green.100" | "green.200" | "green.300";
Run Code Online (Sandbox Code Playgroud)

...但正如您所看到的,随着任一列表的增长,我必须colorScheme手动更新类型。如何获取类型colorShade而无需colorScheme直接手动编辑?

Tri*_*ell 8

您可以使用名为的功能template literal types

type colorShade = `${color}.${shade}`
Run Code Online (Sandbox Code Playgroud)

文档:https://www.typescriptlang.org/docs/handbook/2/template-literal-types.html