Typescript 实践中问题总结

本文总结了TypeScript实践中遇到的问题,包括类型收缩的各个方面:类型断言、类型守卫、双重断言,以及常用工具函数如Partial、Readonly、Record等的使用。还探讨了Unknown与Any、Void与Never的区别,并阐述了Type与Interface在使用上的差异。
摘要由CSDN通过智能技术生成

关于类型收缩

摘取案例出处

类型断言

interface Foo {
   
  bar: number;
  bas: string;
}

const foo = {
   } as Foo;
foo.bar = 123;
foo.bas = 'hello';

类型守卫

  • typeof
function doSome(x: number | string) {
   
  if (typeof x === 'string') {
   
    // 在这个块中,TypeScript 知道 `x` 的类型必须是 `string`
    console.log(x.subtr(1)); // Error: 'subtr' 方法并没有存在于 `string` 上
    console.log(x.substr(1)); // ok
  }

  x.substr(1); // Error: 无法保证 `x` 是 `string` 类型
}
  • instanceof
class Foo {
   
  foo = 123;
  common = '123';
}

class Bar {
   
  bar = 123;
  common = '123';
}

function doStuff(arg: Foo | Bar) {
   
  if (arg instanceof Foo) {
   
    console.log(arg.foo); // ok
    console.log(arg.bar); // Error
  }else{
   
    // 这个块中,一定是 'Bar'
    console.log(arg.foo); // Error
    console.log(arg.bar); // ok
  }
}

doStuff(new Foo());
  • in
interface A {
   
  x: number;
}

interface B {
   
  y: string
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值