typescript - 如何检查我的属性是否存在于类型中
问题描述
据我们所知,打字稿允许我们声明部分类型,但是我们什么时候要检查我的属性是否在 keyof 类型中。让我们来看看
interface Car {
Brand: string;
Model: string;
}
type KeyofCar = keyof Car; // Brand, Model
if('Brand' is in KeyofCar) {
something...
} // I know it doesn't work but it is pseudocode
有没有办法找出来?
解决方案
我不确定你来这里是为了什么。在您的问题中,您在编译时知道'Brand'
在keyof Car
. 那你为什么要检查呢?
如果类型不完全已知,我可以想象尝试做类似的事情,比如在类型参数中......
function<T>(foo: T) {
if('bar' in keyof T) {
// do something...
}
}
我会说您不会尝试通过将某些内容与keyof T
. 而是尝试做这样的事情
interface Car {
Brand: string;
Model: string;
}
interface Bus {
Passengers: number;
Color: string;
}
function(foo: Car | Bus) {
if('Brand' in foo) {
// foo is a Car
} else {
// foo is a Bus
}
}
如果你真的想用钥匙做一些事情,你可以做这样的事情
type CarKey = keyof Car;
const carKeys: CarKey[] = ['Brand', 'Model'];
function(key: string) {
if(carKeys.includes(key)) {
// do thing
}
}
推荐阅读
- logic - 计算以下逻辑表达式的合取范式
- python - Python中的欧几里得算法
- c# - 如何删除字符串中的最后 5 个字符?
- python - os.system 不起作用,但命令行 wokrs
- intellij-idea - Intellij 没有在打字时换行
- python - python中的基本问题
- python-3.x - 如何在套接字 Python 中为 recvfrom 设置超时
- amazon-deequ - 在 deequ 中添加新的建议规则
- google-apps-script - 在我的代码中找到此错误 TypeError: Cannot read property 'getLastRow' of null (line 5, file "Code")
- javascript - 与 `{}` 和真实性进行比较