为什么hasOwnProperty这个属性,不能在ts中查找自身属性呢-ts版本是5.2.2

来源:8-4 类型保护与自定义类型保护

小雨点3545254

2023-11-11

老师您好,为什么hasOwnProperty这个属性,不能在ts中查找自身属性呢

type Person = { username: string } | { age: number };
const foo3 = (n: Person) => {
  if (n.hasOwnProperty('username')) {
    n.username // 这里报错,飘红了
  }
}
let obj = {
  username: '张三'
}
let per = foo3(obj);

我的ts版本是5.2.2,这是什么原因,老师能详细的讲解一下吗?

写回答

1回答

西门老舅

2023-11-12

你好,对于这种对象字面量,即:let obj = {username: '张三'},TS不允许使用hasOwnProperty作为类型保护,只允许使用in运算符。

type Person = { username: string } | { age: number };

const foo3 = (n: Person) => {

  if ( 'username' in n ) {

    n.username

  }

}

let obj = {

  username: '张三'

}

let per = foo3(obj);



0
0

Vue3 + React18 + TS4入门到实战 系统学习3大热门技术

专为初级前端人员设计,系统性学习三大技术

261 学习 · 182 问题

查看课程