TypeScript遍历对象属性 TypeScript遍历对象属性的问题

软件发布|下载排行|最新软件

当前位置:首页IT学院IT技术

TypeScript遍历对象属性 TypeScript遍历对象属性的问题

guo&qi   2021-11-11 我要评论
想了解TypeScript遍历对象属性的问题的相关内容吗,guo&qi在本文为您仔细讲解TypeScript遍历对象属性的相关知识和一些Code实例,欢迎阅读和指正,我们先划重点:TypeScript遍历对象属性问题,TypeScript,遍历对象属性,下面大家一起来学习吧。

一、问题 

 比如下面的代码:

type Animal = {
    name: string;
    age: number
}

const animal:Animal={
    name:"dog",
    age:12
}

function test(obj:Animal) {
    for (let k in obj) {
        console.log(obj[k])。//这里出错
    }
}
test(animal)

报错:

二、解决办法

1. 把对象声明as any

function test(obj:Animal) {
    for (let k in obj) {
        console.log((obj as any)[k]) //不报错
    }
}


  这个方法直接绕过了typescript的校验机制

2. 给对象声明一个接口

type Animal = {
    name: string;
    age: number;
    [key: string]: any
}

const animal:Animal={
    name:"dog",
    age:12
}

function test(obj:Animal) {
    for (let k in obj) {
        console.log(obj [k]) //不报错
    }
}
test(animal)

  这个可以针对比较常见的对象类型,特别是一些工具方法。

3. 使用泛型

function test<T extends object>(obj:T) {
    for (let k in obj) {
        console.log(obj [k]) //不报错
    }
}

4. 使用keyof

function test(obj:Animal) {
    let k: (keyof Animal);
    for (k in obj) {
        console.log(obj [k]) //不报错
    }
}

Copyright 2022 版权所有 软件发布 访问手机版

声明:所有软件和文章来自软件开发商或者作者 如有异议 请与本站联系 联系我们