美文网首页
ts学习(6)

ts学习(6)

作者: 哆啦C梦的百宝箱 | 来源:发表于2023-03-28 21:48 被阅读0次
    1. never类型可以做穷尽性检查。nerver类型表示一个不存在的状态,never类型可以分配给每个类型,但是没有任何类型可以分配给never,除了never本身。
    type Animal = 'lion' | 'cat'
    function checkAnimal(animal:Animal){
      swicth(animal){
        case 'lion':
          return xxx;
        case 'cat':
          return xxx;
        default:
          const other:never = animal;
          return other;
        }
    }
    
    1. 函数的类型描述
      2.1函数类型表达式
    fn:(a:string) => void
    
    //例子
    type Greetfunction =(s:string)=>void
    function greeter(fn:Greetfunction){
      fn('hello world')
    }
    
    function printToConsole(s:string):void{
      console.log(s);
    }
    
    greeter(printToConsole);
    

    2.2调用签名
    在js中函数除了可调用之外,函数还可以有属性。但是函数类型表达式的语法无法声明属性,如果想用属性来描述可调用的东西,可以在对象中,写一个调用签名。

    type Describablefunction={
      description:string;
      (someArg:number):boolean
    }
    
    function doSomething(fn:Describablefunction){
      console.log(fn.description+'returned'+fn(6));
    }
    
    function fn1(n:number):boolean{
      return !!n;
    }
    doSomething(fn1);
    
    

    注意:使用类型签名定义函数类型的时候用的是冒号而不是箭头
    2.3构造签名

    class Ctor{
      s:string;
      contructor(s:string){
        this.s=s;
      }
    }
    type SomeContructor={
      new (s:string):Ctor
    }
    
    function fn(ctor:SomeContructor){
      return new ctor('hello');
    }
    const f =fn(Ctor);
    console.log(f.s);
    

    2.3调用签名和构造签名结合使用

    interface CallOrContructor {
        new (s:string):Date;
        (n?:number):string;
    }
    
    function fn(date:CallOrContructor){
      const d = new date('2023-03-29');
      const n = date();
    }
    

    相关文章

      网友评论

          本文标题:ts学习(6)

          本文链接:https://www.haomeiwen.com/subject/githrdtx.html