typescript - 打字稿:类型问题的关键
问题描述
例如,如果我有这个User
模型:
export interface User {
firstName: string;
lastName: string;
age: number;
password: string;
id: number;
}
并尝试运行此代码:
let user = {
firstName: 'string',
lastName: 'string',
age: 24,
password: 'string',
id: 0
}
let keys: keyof User[] = Object.keys(user) as keyof User[]; // this DOES NOT WORK
// keys: UserKeys[] = Object.keys(user) as UserKeys[]; // this works
type UserKeys = keyof User;
我收到此错误:
Conversion of type `string[]` to type `number | keyof User[]` may be a mistake because neither type sufficiently overlaps with the other. If this was intentional, convert the expression to 'unknown' first.
Type `string[]` is not comparable to type `"includes"`
这是重现该问题的示例。
任何帮助将不胜感激,谢谢。
更新:找到一篇与此问题相关的精彩文章。
解决方案
let keys: (keyof User)[] = Object.keys(this.user) as (keyof User)[];
问题是它keyof User[]
不同于UserKeys[]
. 虽然它和(keyof User)[]
推荐阅读
- javascript - 如何捕获分配给javascript中onload的函数引发的异常
- mongodb - 如何使用 pymongo 搜索和更新字典列表中的值作为 mongo 条目?
- java - 如何使用 fetch 或 fetchResults 正确获取 Page 作为 Querydsl 查询的结果?
- javascript - 我的 javascript 中有一个错误,它说 (e) 没有定义
- c++ - 如何通过输入填充 2D,然后在 C++ 中作为输出读回。这是我写的代码。我给出了错误的输出。我是初学者
- sql - 带有嵌套子查询的 Postgres SQL 查询耗时过长
- jmeter - Jmeter 在输入参数的末尾添加了一个额外的空格
- javascript - Axios 在 node.js 中的 url 之前添加 localhost 路径
- mysql - 我需要使用 MySQL 5.0 搜索医院名称的 MySQL 查询
- reactjs - 在 React 应用程序中模拟这个获取请求有什么问题?