概述
元素隐式具有 “any” 类型,因为类型为 “string” 的表达式不能用于索引类型 “{ name: string; age: number; job: string; }”。
在类型 “{ name: string; age: number; job: string; }” 上找不到具有类型为 “string” 的参数的索引签名。
出现错误后,百度查了结果,根据网上的结果,加了一个判断,之后就不报错了,网上判断代码如下
function isValidKey(
key: string | number | symbol,
object: 《大厂前端面试题解析+Web核心总结学习笔记+企业项目实战源码+最新高清讲解视频》无偿开源 徽信搜索公众号【编程进阶路】 object
): key is keyof typeof object {
return key in object;
}
并且,这段代码也不知道是什么意思,希望能帮忙解答一下;
[](()解答
============================================================
首先,keyof这是一个关键字,它在Typescript中代表遍历的意思,不过遍历的是类型,直接看个例子吧
function getUserInfo(key: string) {
const User = {
name: “oliver”,
age: 18,
job: “打杂”,
};
return User[key];
}
const info = getUserInfo(“name”);
console.log(info);
这个代码,抛开TypeScript的部分,只看代码逻辑,应该是没有问题的,我们定义了一个函数,函数根据传入的key返回这个key对应的value值,但是,这里存在一个问题,就是我们输入的key是不可控的,例子中输入的name,在User中是存在的,假如我们输入的是sex,比如:
const info = getUserInfo(“sex”);
console.log(info);
那么此时的Info结果会是undefined,因为在User上是不存在sex这个属性,很显然,这种不可控的因素有点违反了TypeScript的规则,我们实际上希望的是输入的key一定是User上存在的,对于不存在的就要报错,到这里keyof的作用就体现出来了,先看个改写后的例子:
interface User {
name: string;
age: number;
job: string;
}
function getUserInfo(key: T): User[T] {
const User = {
name: “oliver”,
age: 18,
job: “打杂”,
};
最后
以上就是细心砖头为你收集整理的【问题解答】在TypeScript中keyof怎么理解的全部内容,希望文章能够帮你解决【问题解答】在TypeScript中keyof怎么理解所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复