TypeScript遍歷對(duì)象屬性的問題
一、問題
比如下面的代碼:
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])。//這里出錯(cuò)
}
}
test(animal)
報(bào)錯(cuò):

二、解決辦法
1. 把對(duì)象聲明as any
function test(obj:Animal) {
for (let k in obj) {
console.log((obj as any)[k]) //不報(bào)錯(cuò)
}
}
這個(gè)方法直接繞過了typescript的校驗(yàn)機(jī)制
2. 給對(duì)象聲明一個(gè)接口
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]) //不報(bào)錯(cuò)
}
}
test(animal)
這個(gè)可以針對(duì)比較常見的對(duì)象類型,特別是一些工具方法。
3. 使用泛型
function test<T extends object>(obj:T) {
for (let k in obj) {
console.log(obj [k]) //不報(bào)錯(cuò)
}
}
4. 使用keyof
function test(obj:Animal) {
let k: (keyof Animal);
for (k in obj) {
console.log(obj [k]) //不報(bào)錯(cuò)
}
}
到此這篇關(guān)于TypeScript遍歷對(duì)象屬性的問題的文章就介紹到這了,更多相關(guān)TypeScript遍歷對(duì)象屬性內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
關(guān)于Javascript閉包與應(yīng)用的詳解
這篇文章主要介紹了關(guān)于Javascript閉包與應(yīng)用的詳解,文中有非常詳細(xì)的代碼示例.對(duì)正在學(xué)習(xí)js的伙伴們有很好的幫助,需要的朋友可以參考下2021-04-04
JavaScript實(shí)現(xiàn)一鍵復(fù)制內(nèi)容剪貼板
這篇文章主要為大家介紹了JavaScript實(shí)現(xiàn)一鍵復(fù)制內(nèi)容,document.execCommand原生JS設(shè)置剪貼板的實(shí)現(xiàn)示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-07-07
一篇文章學(xué)會(huì)jsBridge的運(yùn)行機(jī)制
JSBridge是一座用JavaScript搭建起來的橋,搭建這座橋的目的也很簡單,讓native可以調(diào)用web的js代碼,讓web可以 “調(diào)用” 原生的代碼。本文主要通過分析源碼講解jsBridge的運(yùn)行機(jī)制,感興趣的朋友一起來看看吧2021-09-09
JS實(shí)用技巧實(shí)現(xiàn)loading加載示例詳解
這篇文章主要為大家介紹了JS實(shí)用技巧實(shí)現(xiàn)loading加載示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-03-03
autojs長寬不定的圖片在正方形圖片居中實(shí)現(xiàn)詳解
這篇文章主要為大家介紹了autojs長寬不定的圖片在正方形圖片居中實(shí)現(xiàn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-01-01

