javascript - 限制 TypeScript 中的类型组合
问题描述
我有两种类型:
type TypeLetter = "TypeA" | "TypeB"
type TypeNumber = "Type1" | "Type2"
我想限制我可以组合这些类型的值的方式,以便只有TypeA
和Type1
可以在一起,并且只有TypeB
和Type2
可以在一起。
我怎样才能创建一个类型Restricted
来让这样的事情发生?换句话说,这些是有效的:
const valid1: Restricted = {
valLetter: "TypeA"
valNumber: "Type1"
}
const valid2: Restricted = {
valLetter: "TypeB"
valNumber: "Type2"
}
但这不是:
const nope: Restricted = {
valLetter: "TypeB"
valNumber: "Type1"
}
解决方案
以下内容仅适用于这两个。您可以使用const
类型。
type Restricted = {
valLetter: 'TypeA',
valNumber: 'Type1'
} | {
valLetter: 'TypeB',
valNumber: 'Type2'
};
const nope: Restricted = {
valLetter: "TypeB",
valNumber: "Type1"
} // Type '"Type1"' is not assignable to type '"Type2"'.
推荐阅读
- python - Python 和 C++ (Pybind11):Python 扩展模块导入错误
- linux - Linux命令将所有文件从var/A移动到var/
- qt - 旋转的 QML 文本:带有基线锚的位置
- crash - UICollectionView scrollToItemAtIndexPath 崩溃 ios 10
- java - Java 命名指南(特定类类型命名 - 非约定)
- javascript - 将php代码放入传单弹出窗口
- wordpress - WooCommerce PDF 发票和装箱单 - 在发票模板中更改计费和运输详细信息的宽度
- javascript - 什么是 WOPI 操作 URL?
- abap - 通过 Web 服务上传 DMS 文档
- docker - 在 docker 入口点中调用 WebRequest