首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

杀手级的TypeScript功能:const断言

const 断言 1const x = { text: "hello" } as const; 官方文档中给出了这样的解释: TypeScript 3.4 引入了一个名为 const 断言的字面值的新构造...它的语法是一个类型断言,用 const 代替类型名称(例如 123 as const)断言构造新的文字表达式时,我们可以向语言发出以下信号: 该表达式中的字面类型不应被扩展(例如:不能从“hello”转换为字符串...) 对象字面量获取只读属性 数组文字成为只读元组 感觉有点枯燥,还有点混乱。...用新的 const 功能,我可以这样做: 1let y = 'x' as const; // y has type 'x'` 对象字面量获取只读属性 在 Typescript 3.4 之前,类型扩展发生在对象字面量中...数组字面量成为只读元组 在 TypeScript 3.4 之前,声明一个字面量数组将被扩展并且可以修改。 使用 const,我们可以将字面量锁定为其显式值,也不允许修改。

1.2K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    TypeScript - as const

    在 TypeScript 中,as const 是一种类型断言的用法,它用于告诉编译器将某个位置的类型视为一个常量(const)类型。...,config 对象被断言为 as const,这意味着它的属性 apiEndpoint 和 timeout 被推断为只读属性。...as const 是 TypeScript 中的一种类型断言语法,用于将表达式断言为只读(readonly)的字面量类型。...示例: const person = { name: 'Alice', age: 30, } as const; // person 变量被断言为只读的字面量类型 // 因此,尝试修改其属性会导致编译错误...常量对象: 将对象字面量断言为只读的字面量类型,以确保它们在后续代码中不被修改。 2. 常量数组: 将数组字面量断言为只读的字面量类型,以确保数组元素不被修改。 3.

    13810

    TypeScript类型断言

    什么是类型断言 类型断言是可以手动指定一个值得类型 类型断言 let num3:number|string="10" num3=20 console.log(num3.length) 通过如上代码,当我们获取...length的时候会报错因为我们赋值为20所以不存在属性length,那么我们就可以采用类型断言去做处理 值 function getAssert(name:string|number) {...name:string|number) { return (name as string).length; } 因为只有在我们为string类型的时候才有length属性,所以这一块我们要采用类型断言的方式进行处理...通过如下代码我们可以发现会出现异常正如下方图片所示,因为他并非是强制类型转换,他只能断言联合类型中存在的类型.不存在的类型是不允许的. function getAssert(name:string|number

    63920

    TypeScript类型断言

    什么是类型断言 类型断言是可以手动指定一个值得类型 类型断言 let num3:number|string="10" num3=20 console.log(num3.length) 通过如上代码,当我们获取...length的时候会报错因为我们赋值为20所以不存在属性length,那么我们就可以采用类型断言去做处理 值 function getAssert(name:string|number) {...name:string|number) { return (name as string).length; } 因为只有在我们为string类型的时候才有length属性,所以这一块我们要采用类型断言的方式进行处理...通过如下代码我们可以发现会出现异常正如下方图片所示,因为他并非是强制类型转换,他只能断言联合类型中存在的类型.不存在的类型是不允许的. function getAssert(name:string|number

    75210

    TypeScript 非空断言

    答案是有的,就是使用 TypeScript 2.0 提供的非空断言操作符: function sayHello(name: string | undefined) { let sname: string...(b); 虽然在 TS 代码中,我们使用了非空断言,使得 const b: number = a!...; 语句可以通过 TypeScript 类型检查器的检查。但在生成的 ES5 代码中,! 非空断言操作符被移除了,所以在浏览器中执行以上代码,在控制台会输出 undefined。...三、非空断言操作符使用示例 在以下示例中,首先我们使用 TypeScript 类型别名定义了一个 ListNode 类型,用于表示链表节点。...在 TypeScript 实际项目的开发过程中,除了使用非空断言(!)之外,读者还可以使用 TypeScript 3.7 版本中新引入的可选链运算符(?.)和空值合并运算符(??)

    20.6K65

    【TypeScript】007-类型断言

    类型断言的用途 将一个联合类型断言为其中一个类型 之前提到过,当 TypeScript 不确定一个联合类型的变量到底是哪个类型的时候,我们只能访问此联合类型的所有类型中共有的属性或方法: interface...需要注意的是,类型断言只能够**「欺骗」**TypeScript 编译器,无法避免运行时的错误,反而滥用类型断言可能会导致运行时错误: interface Cat { name: string;...Fish 了,而 TypeScript 编译器信任了我们的断言,故在调用 swim() 时没有编译错误。...类型断言 vs 类型转换 类型断言只会影响 TypeScript 编译时的类型,类型断言语句在编译结果中会被删除: 意思就像是开了后门,本来是“错的”,让通过了!...Cat; 等价于 const tom: Cat = getCacheData('tom'); 知道了它们的核心区别,就知道了类型声明是比类型断言更加严格的。

    3600

    早读《Const Assertions in Literal Expressions in TypeScript》

    https://mariusschulz.com/blog/const-assertions-in-literal-expressions-in-typescript 这篇文章讲述了 TypeScript...3.4 提供的一个功能 const 断言,这个功能解决了我以前遇到过的一个问题(axios 定义的 method 就是 "GET" | "POST",不知道现在他们改了么)。...TypeScript 对于类型推断有它自己的一套原则,当你定义了一个封装,如下一个场景就能还原这个问题: function fetchJSON(url: string, method: "GET" |...; 这是使用 const 关键字的特殊类型: 文字表达式中的文字类型都不会扩展 对象属性只读 数组变成只读的元组 由于变成了只读,如果你还想给 HTTPRequestMethod 分配新的值时,TS编译器是会给出错误的...最后结论: 例如,您可以定义一个ORIGIN变量来描述二维空间中的原点,如下所示: const ORIGIN = { x: 0, y: 0 } as const; 这等同于(并且比以下声明更简洁

    51720

    TypeScript

    TypeScript 是什么 TypeScript 是 JavaScript 的超集 ?...只读属性加 readonly 函数(value: type) => returType 会有额外的属性 [propName: string]: any #使用 function getPerson(person...比如,我们需要实现一个函数 reverse,输入数字 123 的时候,输出反转的数字 321,输入字符串 'hello' 的时候,输出反转的字符串 'olleh'。...#类型断言的限制 联合类型可以被断言为其中一个类型 父类可以被断言为子类 任何类型都可以被断言为 any any 可以被断言为任何类型 要使得 A 能够被断言为 B,只需要 A 兼容 B 或 B 兼容...官方文档 TypeScript Doc(官方文档&英文版) TypeScript Handbook(中文版) Typescript 入门教程 深入理解TypeScript 1.2W字 | 了不起的 TypeScript

    1.8K10

    TypeScript 3.4 正式发布!

    对只读数组和只读元组的改进 —— 使用只读数组类型更容易一些: 只读数组的新语法:使用新的数组类型的 readonly 修改器。...4} 只读元组:对 readonly 元组的新支持。我们可以用 readonly 关键字为任何元组类型添加前缀,使其成为 readonly 元组,就像用数组的简写语法一样。...const断言—— 为字面量引入一个名为 const 断言的新构造。它的语法是用 const 代替类型名称的类型断言(例如123 as const)。...当你使用 const 断言构造新的表达式时,可以给语言发出下面这些信号: 该表达式中的字面量类型不应被加宽(例如,不要从 “hello” 到 string) object 字面量获得 readonly...在存在多个参数的情况下,TypeScript 将提供重构以将参数列表转换为单个解构对象。 可以到官方发布说明了解有关 TypeScript 3.4 所有新功能的更多信息。

    1.4K10

    TypeScript类型断言-类型的声明和转换

    ,这是因为类型断言会让 TypeScript 编译器将变量当做指定的类型,而不管它实际的类型,在程序运行时可能有类型错误,断言需要慎用。...let anyValue:any = 'zhangsan';let length:number = (anyValue as string).length;//0断言类型(1)非空断言含义:非空断言用!...(); }这里出一个面试题,如下:// 面试题 const a: number | undefined = undefined;const b: number = a!...;//这里使用断言无效,a已经有明确的值console.log(b);// 上面的代码会编译成const a = undefined;const b = a;console.log(b); // undefined...19;我们可以改成这样就不会报错啦const obj:Object = {};(obj).name = 'zhangsan';(obj).age = 19;(4)调用函数时将参数和返回值断言成精确的值

    37910

    这 5 个 TypeScript 的功能特征,你需要熟悉下

    ; 唯一的区别是 as const 将使数组只读,这在我看来是可取的。...假设我们要将名为 Teacher 的实体的所有属性转换为只读。我们可以使用什么实用程序? 我们可以使用 Readonly 实用程序类型。...让我们反转 Readonly 类型以创建一个 Writable 类型: interface Teacher { readonly name: string; readonly email: string...这些基本上是断言——就像任何给定类型的函数一样。 我们如何使用它们?我们只需要定义一个函数,它的返回类型是一个类型谓词,它返回true/false。...该断言函数将成为我们的类型保护。 类型保护是有作用域的。在 isHunter(x) 代码块中,x 变量的类型为 Hunter。这意味着我们可以安全地调用它的hunt 方法。

    1.3K40

    TypeScript-never和object类型、类型断言概述

    前言TypeScript 中的 "never" 类型表示一个永远不会发生正常结束的函数返回值类型,通常在异常处理或无限循环中使用。这有助于标识代码中的潜在问题和错误流程。"...Object 类型表示一个对象let obj: object;// 会报错// obj = 123;obj = {name: "BNTang", age: 18};console.log(obj);类型断言概述...TS 中的类型断言和其它编程语言的 类型转换 很像,可以将一种类型强制转换成另外一种类型类型断言就是告诉编译器, 你不要帮我们检查了, 相信我,我知道自己在干什么例如:我们拿到了一个 any 类型的变量...,但是我们明确的知道这个变量中保存的是 字符串 类型,此时我们就可以通过类型断言告诉编译器, 这个变量是一个字符串类型, 此时我们就可以通过类型断言将 any 类型转换成 string 类型, 使用字符串类型中相关的方法了方式一...let str: any = "yby6";let len = (str).length;console.log(len);方式二在企业开发中推荐使用 as 来进行类型转换(类型断言)因为第一种方式有兼容性问题

    25120
    领券