javascript - TypeScript:省略只读对象文字
问题描述
我需要确保的值bar
必须是只读对象FOO
的键,除了键c
。
代码
const FOO = {
a: {
// key-value pairs
},
b: {
// key-value pairs
},
c: {
// key-value pairs
},
} as const;
// all of the keys are assignable
const allKeys: keyof typeof FOO = 'a';
// tried this but TypeScript doesn’t throw error
const bar: Omit<keyof typeof FOO, 'c'> = 'c';
解决方案
Omit<T, K>
用于对象/记录和属性,您正在寻找Exclude<T, U>
哪些适用于工会:
const bar: Exclude<keyof typeof FOO, 'c'> = 'c'; // error
或者,将 应用于Omit
记录类型,然后应用于keyof
结果:
const bar: keyof Omit<typeof FOO, 'c'> = 'c'; // error
推荐阅读
- javascript - 根据列表中图像的数量按比例调整动态图像列表的大小
- navigation - 导航 - 从区域检索用户输入
- bash - Alpine 中的 ASH/BASH:如何从从列表文件读取的变量名列表中扩展变量
- python - 在R Markdown OSError中运行python:[WinError 6]句柄无效
- sockets - 具有 SO_REUSEPORT 的多个线程中的 UDP 服务器套接字
- xml - 在 android studio 中使用 Jsoup 解析 xml 数据
- java - 启用 LDAP 的 Keycloak 电子邮件“UPDATE_PASSWORD”机制(15.0.2)
- html - 在节点 js 中使用 xmlBuilder 生成单独的 xml 文档
- javascript - 如何从 Angular 中的多选中保存选项?
- android - 处理jetpack compose中数据列表可变状态的正确方法