cat blog!!

meow! poop here, your purrfect companion

rawr do you like my blog?

  • age: 2
  • sex: nya~ Stop guessing randomly, okay? 🐾
  • linux.do

welcome to my blog,nya~!

Meow!

Is the Order a Kitty?

things i love:

  • sleeping
  • poop

TypeScript学习笔记(一)any unknown never!!

tags: TypeScript
@clownly 24/02/2025

any、unknown与never

any

any类型可以用来表示任何类型,但是它会让typescript失去类型检查的作用,所以尽量避免使用any类型。

  • 如果是类型不兼容报错导致使用any,可以使用类型断言来解决;
  • 如果是类型太复杂导致不想全部声明而使用any,使用类型断言为需要的最简类型;
  • 如果想表达未知类型,使用unknown类型。

unknown

unknown类型与any类型类似,它可以被赋值给任何类型,但是它不能被赋值给任何类型,也不能进行属性访问,除非使用类型断言。

never

主动使用never的两种情况

  • 函数返回值类型为never,函数会抛出错误,或者进入死循环

    function fn(): never {
      throw new Error("error");
    }
    
  • 类型收窄

    function fn(x: string | number) {
      if (typeof x === "string") {
        x.charAt(0);
      } else  if (typeof x === "number") {
        x.toFixed(2);
      } else {
        const check: never = x;
        throw new Error(`unknown type: ${check}`) 
      }
    }
    

类型断言

类型断言的正确使用方式,在TypeScript类型分析不正确或不符合预期时,将其断言为此处的正确类型。基本语法是as NewType,也可以使用<NewType>。

非空断言

!非空断言,用于确定某个值不为null或undefined。

const el = document.getElementById("app")!;

这里引入一个类型层级的概念, 其中any/unknown是Top Type,never是Bottom Type。

  • ««
  • «
  • 1
  • 2
  • 3
  • 4
  • »
  • »»