首页
学习
活动
专区
圈层
工具
发布

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

前言TypeScript 中的 "never" 类型表示一个永远不会发生正常结束的函数返回值类型,通常在异常处理或无限循环中使用。这有助于标识代码中的潜在问题和错误流程。"...never" 用于处理异常情况,而 "object" 用于通用的对象表示。正确使用它们有助于提高代码的可读性和类型安全性。...Never 类型表示的是那些永不存在的值的类型一般用于抛出异常或根本不可能有返回值的函数抛出异常function demo(): never { throw new Error("报错了");}demo...();不可能有返回值的函数function demo(): never { while (true) { }}demo();Object 类型表示一个对象let obj: object;//..., 此时我们就可以通过类型断言将 any 类型转换成 string 类型, 使用字符串类型中相关的方法了方式一let str: any = "yby6";let len = (string>str).

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

    【TypeScript 演化史 — 第三章】标记联合类型 与 never 类型

    never 类型 TypeScript 2.0 引入了一个新原始类型 never。never 类型表示值的类型从不出现。...在有明确 never 返回类型注解的函数中,所有 return 语句(如果有的话)必须有 never 类型的表达式并且函数的终点必须是不可执行的。...不可能有该类型的变量 另一种情况是,never 类型被推断为从不为 ture。在下面的示例中,我们检查 value 参数是否同时是字符串和数字,这是不可能的。...在这种情况下,TypeScript 推断出 never 类型,因为咱们已经将 value 参数注解为类型为 string | number,也就是说,除了string 或 number, value 参数不可能有其他类型...never 和 void 之间的区别 你可能会问,为什么 TypeScript 已经有一个 void 类型为啥还需要 never 类型。

    1.5K20

    React + TypeScript + Hook 带你手把手打造类型安全的应用。

    社区里有很多 TypeScript 比较基础的分享,但是关于 React 实战的还是相对少一些,这篇文章就带大家用 React 从头开始搭建一个 TypeScript 的 todolist,我们的目标是实现类型安全...实战 创建应用 首先使用的脚手架是 create-react-app,根据 www.html.cn/create-reac… 的流程可以很轻松的创建一个开箱即用的 typescript-react-app.../styles/App.css"; type Todo = { id: number, // 名字 name: string, // 是否完成 done: boolean };...: Payload ): Promise> | never; 是不是就清楚很多了,传入不同的参数会推断出不同的 payload 入参,以及返回值类型。...后记 到此我们就实现了一个严格类型的 React 应用,写这篇文章的目的不是让大家都要在公司的项目里去把类型推断做到极致,毕竟一切的技术还是为业务服务的。

    58510

    React + TypeScript + Hook 带你手把手打造类型安全的应用。

    前言 TypeScript可以说是今年的一大流行点,虽然Angular早就开始把TypeScript作为内置支持了,但是真正在中文社区火起来据我观察也就是没多久的事情,尤其是在Vue3官方宣布采用TypeScript...社区里有很多TypeScript比较基础的分享,但是关于React实战的还是相对少一些,这篇文章就带大家用React从头开始搭建一个TypeScript的todolist,我们的目标是实现类型安全,杜绝开发时可能出现的任何错误...实战 创建应用 首先使用的脚手架是create-react-app,根据 www.html.cn/create-reac… 的流程可以很轻松的创建一个开箱即用的typescript-react-app.../styles/App.css"; type Todo = { id: number; // 名字 name: string; // 是否完成 done: boolean; };...: Payload): Promise> | never 复制代码 是不是就清楚很多了,传入不同的参数会推断出不同的payload入参,以及返回值类型。

    2.3K10

    【TS 演化史 -- 17】各文件的JSX工厂 、有条件类型和映射类型修饰符

    never类型是 TypeScript 的底层类型,表示从未出现的值的类型。 分布式有条件类型 那么,为什么e 条件类型和never类型的组合是有用的呢?它有效地允许咱们从联合类型中删除组成类型。...假设咱们有一个User类型,想要使用NonNullablePropertyKeys类型来找出哪些属性是不可空的: type User = { name: string; email: string...咱们可以通过清除never类型来简化生成的联合类型: type NonNullableUserPropertyKeys = "name"; User类型中唯一不可为空的属性键是“name”。...咱们进一步研究这个示例,并定义一个类型来提取给定类型的所有不可空属性。...:在User类型中,只有name属性不可空。

    3.1K20

    React 播客专栏 Vol.7|TypeScript 的对象类型、类型别名和类:你能写的,不止是“变量”

    欢迎回到《前端达人 · React 播客书单》第 7 期(正文内容为学习笔记摘要,音频内容是详细的解读,方便你理解),请点击下方收听 前几天我们聊了 TypeScript 的基础类型,今天我们往更实战...“类型”,也就是告诉 TS: 这个对象里有哪些字段 每个字段是什么类型 const product: { name: string; unitPrice: number } = { name: "Table...03|类型别名:用 type 关键字“起个名字” 如果你觉得对象类型太长,老是重复写不方便,可以用 type 创建一个“别名”: type Product = { name: string; unitPrice...如果你更习惯“面向对象”的风格,TypeScript 支持你用类(Class)定义结构: class Product { name: string; unitPrice: number;...、返回值类型一致 #React #React播客 #前端播客 #前端达人 #TypeScript

    29110

    React 播客专栏 Vol.6|TypeScript 是什么?为啥写 React 要加它?

    写 React 的人为什么都在用? ✅ 01. 写错立马红线警告,不用等浏览器出错才发现 TypeScript 编译器会在你写代码时就标出类型错误。 ✅ 02....不推荐) unknown let data: unknown 比 any 更安全的未知类型 void function fn(): void 没有返回值的函数 never function error(...): never 永远不会返回(抛错或死循环) Date new Date() 时间类型 数组 number[] 或 Array 一组相同类型的元素 对象类型 { name: string...✅ 总结 Key Takeaways: TypeScript 是 JavaScript 的强类型升级版 它的类型系统帮你在开发阶段发现问题 支持 React 的组件、事件、状态进行强类型约束 类型推断让代码更简洁...TS 是大型前端项目不可缺的技能!

    34510

    类型即正义:TypeScript 从入门到实践(一)

    TypeScript React 的开发环境,那么可以学习一下我们的序言教程: 类型即正义:TypeScript 从入门到实践(序章) ** 如果你已经对 TypeScript 如何搭建 React...number 类型,可以被分配(assignable )给 number 类型的变量,这里的 assignable 是可分配的意思,就是一个子类型可以被分配给一个父类型,比如数字 1 可以被分配给 number...特殊类型 TS 中还有几个常用的特殊类型,它们是 any 、unknown 和 never ,其中 never 类型一般会伴随着和函数的类型声明一起使用,所以我们将 never 类型的时候会提到函数的类型如何进行声明...: string): never { // ......,我们之后不可以修改这个属性了,我们来看一个例子: interface Todo { content: string; readonly user: string; time?

    2.9K20

    【Vue3+TypeScript】CRM系统项目搭建之 — 关于拥抱 TypeScript 这件事【上】

    100 //警告:不能将类型“number”分配给类型“string” b = 666 b = '你好'//警告:不能将类型“string”分配给类型“number” c = true c = 666...类型推断 let d = -99 //TypeScript会推断出变量d的类型是数字 d = false //警告:不能将类型“boolean”分配给类型“number 3....object 包含: Array 、 Function 、 Date … TypeScript 中的数据类型: 以上所有 六个新类型: void 、 never 、 unknown 、 any 、 enum...1 a = true a = undefined a = null never ⼀般是 TypeScript 主动推断出来的,例如: // 指定a的类型为string let a: string //...”分配给类型“object” a = '你好' // 警告:不能将类型“string”分配给类型“object” Object 的含义: Object 的实例对象,限制的范围太⼤了,⼏乎不⽤。

    55010

    实现TypeScript中的互斥类型

    此时,你会怎么用TypeScript来定义这个类型?本文将带大家实现一个互斥类型来解决这个问题,欢迎各位感兴趣的开发者阅读本文。 前置知识 在实现之前,我们需要先来了解几个基础的知识。...: string }; never类型 在TypeScript中它有一个特殊的类型never,它是所有类型的子类型,无法再进行细分,也就意味着除了其本身没有类型可以再分配给它。...let amazing: never; amazing = 12;// 报错:amazing是never类型不能分配给number类型 amazing = true;// 报错:amazing是never...类型不能分配给boolean类型 amazing = "真神奇";// 报错:amazing是never类型不能分配给string类型 amazing = {};// 报错:amazing是never类型不能分配给...{}类型 amazing = [];// 报错:amazing是never类型不能分配给[]类型 剔除联合类型中的属性 有一组联合类型"a" | "b" | "c" | "d",我们想剔除属性b和c,在

    3.9K40

    【万字长文】深入理解 Typescript 高级用法

    type key = 'vue' | 'react'; type MappedType = { [k in key]: string } // { vue: string; react: string...因此某一个类型发生变化时,其他相关的类型也会自动更新,并且当代码的臃肿到不可维护的时候,你会得到一个友好的提示,整个类型系统就好像一个被精心设计过的约束系统。...上面提到了 "类型收窄",这与我们的目标已经十分接近了,当然我们还需要了解 never 参与类型运算的相关表现: type NeverTest = string | never // stirng type...NeverTest2 = string & never // never 重要的知识出现了:T | never,结果为 T。...「答」:不可以,所有可以使用 Typescript Plugin 的场景一定都是编码阶段的,而且官方对 plugins 的定位局限在了 只改善编写体验 这方面,你并不能自定义语法或者自定义规则来改变编译结果

    3.7K20
    领券