Skip to content

类型断言

  • 我们在获取类型的时候为了方便可以使用类型断言来判定他是哪一类类型

关键字 as

js

const getLength = (target: number | string): number => {
  if ((target as string).length) {
    return (target as string).length;
  } else {
    return Number(target);
  }
};

console.log(getLength("222"));

console.log(getLength(222));

这里特别注意的不能用 target as string 来判断

必须用(target as string).length 来判断

as 只不过就是强制把变量的类型转变为你想要的类型,不能作为判断的依据

非空断言

  • 在上下文中当类型检查器无法断定类型时,一个新的后缀表达式操作符 ! 可以用于断言操作对象是非 null 或非 undefined 类型。

  • 非空断言操作符 ! 可以放置在引用表达式的末尾,以断言表达式引用对象为非 null 或非 undefined 类型。

  • 非空断言操作符 ! 可以用来断言一个表达式是非 null 和非 undefined 类型,但是不能断言一个表达式一定存在。

ts
  m[item.prop!] = '李四'

可有可无

  • 可选链操作符 ?. 允许读取位于连接对象链深处的属性的值,而不必明确验证链中的每个引用是否有效。?. 操作符的功能类似于 . 链式操作符,不同之处在于,当链条上的某个属性值为 nullundefined 时,它会立即停止运算,而不会抛出错误。
ts
interface obj1 {
  name: string
  age?: number
  address: {
    city: string
    street: string
    houseNum: number
  }
}
  const obj:obj1 = {
    name: '张三',
    age: 18,
    address: {
      city: '北京',
      street: '长安街',
      houseNum: 100
    }
  }

  const obj2:obj1 = {
    name: '李四',
    address: {
      city: '北京',
      street: '长安街',
      houseNum: 100
    }
  }