精华内容
下载资源
问答
  • TS类型断言作用

    2021-09-08 10:21:32
    //类型断言用于解决 “不确定一个联合类型的变量到底是哪个类型的时候,我们只能访问此联合类型的所有类型中共有的属性或方法” //需要用typeof (animal as Cat).run === 'function' 作类型确定,否则使用不当会...
    function swim(animal: Cat | Fish) {
    	//类型断言用于解决 “不确定一个联合类型的变量到底是哪个类型的时候,我们只能访问此联合类型的所有类型中共有的属性或方法”
    	//需要用typeof (animal as Cat).run === 'function' 作类型确定,否则使用不当会造成运行时错误
    	if(typeof (animal as Cat).run === 'function'){
    		console.log("Cat");
    		(animal as Cat).run();
    	}else{
    		console.log("Fish");
    		(animal as Fish).swim();
    	}
    }
    
    const tom: Cat = {
    	name: 'Tom',
    	run() { console.log('run') }
    };
    swim(tom);

    展开全文
  • ts类型断言-as

    2021-08-12 09:43:32
    类型断言,可以用来手动指定一个值的类型 语法: 值 as 类型 或 <类型>值 用途: 1、将一个联合类型断言为其中一个类型 2、将一个父类断言为更加具体的子类 3、将任何一个类型断言为any 4、将any断言为一个...
    /**
     * 类型断言,可以用来手动指定一个值的类型
     * 语法:
     * 值 as 类型    或    <类型>值
     * 
     * 用途:
     * 1、将一个联合类型断言为其中一个类型
     * 2、将一个父类断言为更加具体的子类
     * 3、将任何一个类型断言为any
     * 4、将any断言为一个具体的类型
     * 要使得 A 能够被断言为 B,只需要 A 兼容 B 或 B 兼容 A 即可
     * 
     * 类型断言不是类型转换,不会影响变量的类型
     */
    
    // 第一种
     interface Cat {
      name: string;
      run(): void;
    }
    interface Fish {
      name: string;
      swim(): void;
    }
    // function isFish(animal: Cat | Fish) {
    //   if(typeof animal.swim === 'function') {    //此时swim会报错,因为cat接口没有swim方法
    //     return true;
    //   }
    //   return false;
    // }
    function isFish(animal: Cat | Fish) {
      if(typeof (animal as Fish).swim === 'function') {  //但是这样会隐藏animal可能为Cat的情况,将animal直接断言为Fish
        return true;
      }
      return false;
    }
    
    // 第二种
    class ApiError extends Error {
      code:number = 0;
    }
    class HttpError extends Error {
      statusCode:number = 200;
    }
    function isApiError(error: Error) {
      if(typeof (error as ApiError).code === 'number'){
        return true;
      }
      return false;
    }
    
    // 第三种
    const foo: number = 1;
    // foo.length = 1;   //当引用一次词类型上不存在的属性和方法时会报错
    // window.foo = 1;   //但这种情况ts编译也会报错,window上没有foo属性,此时可以使用断言
    (window as any).foo = 1;
    
    // 第四种
    function getCacheData(key: string): any {
      return (window as any).cache[key];
    }
    
    interface Cat {
      name: string;
      run(): void;
    }
    
    const toms = getCacheData('tom') as Cat;
    tom.run();
    
    展开全文
  • 需要使用类型断言 这样只是欺骗了ts,怎正运行js的时候还是可能报错的. 如下面的例子: interface M { name: string, run(): void } interface N { name: string, } // 就是当使用到的属性或者方法 一个接口上有...

    类型断言

    就是当使用到的属性或者方法 一个接口上有一个接口上没有
    需要使用类型断言 这样只是欺骗了ts,怎正运行js的时候还是可能报错的.

    如下面的例子:

    interface M {
        name: string,
        run(): void
    }
    interface N {
        name: string,
    }
    //  就是当使用到的属性或者方法 一个接口上有一个接口上没有
    //需要使用类型断言  这样只是欺骗了ts,怎正运行js的时候还是可能报错的.
    var ff = (obj: M | N): void => {
        if ((obj as M).run) {
            // if (obj.run){
            console.log(1);
        } else {
            console.log(2);
        }
    }
    

    例如:

    interface M {
        name: string,
        run(): void
    }
    interface N {
        name: string,
    }
    var ff = (obj: M | N): void => {
        (obj as M).run()
    }
    var objName :N={
        name:'zjq'
    }
    

    虽然ts编译成js没问题但是运行js的时候还是会有问题。

    类型断言不是类型转换
    避免类型断言为any类型。
    避免双重断言。
    xxx as M as N

    展开全文
  • ts类型断言

    2021-11-23 17:42:17
    ts类型断言 类型断言可以手动指定一个值的类型 1、语法 值 as 类型 或者 <类型>值 2、类型断言的用途 (1)将一个联合类型推断为其中一个类型 (2)将一个父类断言为更加具体的子类 (3)将任何一个类型断言...

    ts类型断言

    类型断言可以手动指定一个值的类型

    1、语法

    值 as 类型 或者 <类型>值
    

    2、类型断言的用途

    (1)将一个联合类型推断为其中一个类型

    (2)将一个父类断言为更加具体的子类

    (3)将任何一个类型断言为any

    (4)将any断言为一个具体的类型

    3、类型断言的限制

    4、双重断言

    5、类型断言和类型转换

    6、类型断言和类型声明

    7、类型断言和泛型

    展开全文
  • TS类型断言简化对象类型声明

    千次阅读 2020-10-09 20:22:05
    TS类型断言简化对象类型声明 前言 在使用了 typescript 的项目开发中,有时候为了某个对象进行声明,经常需要写完 interface 之后,在赋值的时候又写了一遍一模一样的代码;当想对它增加一个键值,又得去增加 ...
  • ts入门笔记——ts类型声明和类型断言 学习路径 1.学习ts声明变量类型 2.学习ts的类型断言(解释型类型转换) 3.学习ts的接口进一步详解 ts在线运行练习网站:https://www.tslang.cn/play/index.html 一、ts简介 1....
  • 它是JavaScript的一个超集,而且本质上TypeScript扩展了JavaScript的语法解决JavaScript的“痛点”:弱类型和没有命名空间,导致很难模块化 为什么要用TypeScript 1、开源 2、简单 TypeScript 是 JavaScript 的超集...
  • // 先把str赋值为string,TS就默认str为string类型 let str = 'str' // 再将str赋值为number会报错,因为TS认为它已经是string类型 str = 123 联合类型 - union types // 我们只需要用中竖线来分割两个 let ...
  • ts断言

    2021-04-08 15:54:39
    用于属性的读取,都可以缩小类型检查范围,都做判空用途时是等价的。只是!具体用于告知编译器此值不可能为空值(null和undefined),而as不限于此。 2、?可用于属性的定义和读取,读取时告诉编译器此值可能为空值...
  • 这么写,行!const temp = this.$refs.drag as HTMLElement(断言这玩应绝壁是文档元素) 这么写,不完全行!const temp:any = this.$refs.drag(这玩应乐意是啥是啥)
  • typescript类型断言

    千次阅读 2019-07-11 10:50:29
    类型断言表示: <类型> 值 值 as <类型> 类型断言原理: (1)不确定一个联合类型的变量到底是哪个类型的时候,我们只能访问此联合类型的所有类型里共有的属性或方法; (2) 类型断言不是类型转换,...
  • TS类型断言

    2021-05-10 14:26:49
    类型断言用于手动指定一个值的类型。 一、语法 值 as 类型 二、用途 2.1 将一个联合类型断言为其中一个类型 interface Cat { name:string; run():void; } interface Fish { name:string; swim():void; } ...
  • 类型断言 && 变量声明 基础类型 原始类型 let isDone: boolean = false; let decLiteral: number = 6; let name: string = "bob"; let list: number[] = [1, 2, 3]; let list: Array<number> = [1, ...
  • // 类型断言: 可以用来告诉TS解析器变量的实际类型 // 利用类型断言可以处理unknow的赋值问题 let c: unknown = '123' let d: string = '456' d = c as string console.log(d) // '123' console.log(typeof d)...
  • TypeScript 类型断言

    2018-12-22 08:55:16
    类型断言(Type Assertion)可以用来手动指定一个值的类型。 语法 &lt;类型&gt;值 或者 值 as 类型 在 tsx 语法(React 的 jsx 语法的 ts 版)中必须用后一种。 例子:将一个联合类型的变量指定为一个...
  • 文章目录8、类型断言语法类型断言的用途将一个联合类型断言为其中一个类型将一个父类断言为更加具体的子类将任何一个类型断言为 `any`将 `any` 断言为一个具体的类型类型断言的限制双重断言类型断言 vs 类型转换类型...
  • TypeScript 遵循强类型,如果将不同的类型赋值给变量会编译错误。 虽然再前面的章节中已经使用到了变量声明,但那只是简单的使用,下面对变量声明的使用会有一个详细的介绍。 变量是一种使用方便的占位符,用于...
  • Typescript类型断言什么情况下可以类型断言?举例将父类断言为更加具体的子类子类断言为父类需要注意的是双重断言 什么情况下可以类型断言? 要使得A类能够被断言为B类,只需要 A兼容B 或 B兼容A 即可 联合类型可以被...
  • 的语法在tsx中表示一个ReactNode,在ts中除了表示类型断言外,也可能表示一个泛型。 故建议使用类型断言的时候,统一使用值 as 类型这样的语法。 类型断言的用途 将一个联合类型断言为其中一个类型 之前有提到过,当...
  • 问题:调用 ...解决方式:使用类型断言,来手动指定更加具体的类型(比如,此处应该比 Element 类型更加具 值 as 更具体的类型 let img = document.querySelector('#image') as HTMLImageElement 技巧:
  • typed-assert是一个实现TS 3.7断言功能API的类型安全断言库,没有外部依赖项。 typed-assert typed-assert是一个实现TS 3.7断言函数API的类型安全断言库,没有外部依赖项。 请参阅文档。 安装npm install typed-...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,884
精华内容 1,553
关键字:

ts类型断言