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

TypeScript 终极初学者指南

TypeScript 中的类型 原始类型 在 JavaScript 中,有 7 种原始类型: string number bigint boolean undefined null symbol 原始类型都是不可变的...0 can only be a string TypeScript 中的对象 TypeScript 中的对象必须拥有所有正确的属性和值类型: // 使用特定的对象类型注释声明一个名为 person...TypeScript 中的函数 我们可以定义函数参数和返回值的类型: // 定义一个名为 circle 的函数,它接受一个类型为 number 的直径变量,并返回一个字符串 function circle...在 TypeScript 中,泛型用于描述两个值之间的对应关系。在上面的例子中,返回类型与输入类型有关。我们用一个泛型来描述对应关系。...另一个例子:如果需要接受多个类型的函数,最好使用泛型而不是 any 。

6.9K20

【TypeScript 演化史 — 第七章】映射类型和更好的字面量类型推断

在方括号中,使用了 keyof 操作符。keyof T 将 T 类型的所有属性名表示为字符串字面量类型的联合。 方括号中的 in 关键字表示我们正在处理映射类型。...string | null; // readonly y: string | null; // }; 映射类型的实际用例 实战中经常可以看到映射类型,来看看 React 和 Lodash : React...在 TypeScript 2.0 中,类型系统扩展了几个新的字面量类型: boolean 字面量类型 数字字面量 枚举字面量 不带类型注解的 const 变量或 readonly 属性的类型推断为字面量初始化的类型...字符串字面量扩展类型是 string,数字字面量扩展类型是number,true 或 false 的字面量类型是 boolean,还有枚举字面量扩展类型是枚举。...但是,如果使用const关键字声明变量并使用字符串字面量进行初始化,则推断的类型不再是 string,而是字面量类型: const baseUrl = "https://example.com/"; /

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

    TypeScript

    比如,我们需要实现一个函数 reverse,输入数字 123 的时候,输出反转的数字 321,输入字符串 'hello' 的时候,输出反转的字符串 'olleh'。...') { return x.split('').reverse().join(''); } } 然而这样有一个缺点,就是不能够精确的表达,输入为数字的时候,输出也应该为数字,输入为字符串的时候...这时,我们可以使用重载定义多个 reverse 的函数类型: function reverse(x: number): number; function reverse(x: string): string...在编辑器的代码提示中,可以正确的看到前两个提示。 注意,TypeScript 会优先从最前面的函数定义开始匹配,所以多个函数定义如果有包含关系,需要优先把精确的定义写在前面。...这里我有意使用不同的变量名,以表明类型值沿链向上传播,且与变量名无关。 #泛型约束 确保属性存在 当我们在函数中获取length属性,在类型为number时,是没有length的,所以会报错。

    1.8K10

    【TypeScript 演化史 -- 7】映射类型和更好的字面量类型推断

    在方括号中,使用了 keyof 操作符。keyof T 将 T 类型的所有属性名表示为字符串字面量类型的联合。 方括号中的 in 关键字表示我们正在处理映射类型。...更好的字面量类型推断 字符串、数字和布尔字面量类型(如:"abc",1和true)之前仅在存在显式类型注释时才被推断。从 TypeScript 2.1 开始,字面量类型总是推断为默认值。...在 TypeScript 2.0 中,类型系统扩展了几个新的字面量类型: boolean 字面量类型 数字字面量 枚举字面量 不带类型注解的 const 变量或 readonly 属性的类型推断为字面量初始化的类型...字符串字面量扩展类型是 string,数字字面量扩展类型是number,true 或 false 的字面量类型是 boolean,还有枚举字面量扩展类型是枚举。...但是,如果使用const关键字声明变量并使用字符串字面量进行初始化,则推断的类型不再是 string,而是字面量类型: const baseUrl = "https://example.com/"; /

    2.9K10

    前端应该掌握的Typescript基础知识

    TS 安装 npm init -y npm install typescript -g 编译 tsc --init tsc 数据类型 js 中的数据类型: 字符串(String)、数字(Number)...如果变量定义的时候没有赋值, 默认是 any 类型 let x; // 可以赋值为任何类型的值 let x1 = '生生世世'; // x1会推论成sring类型, 不能给x1赋值为其他类型了 // x1...字符串字面量类型用来约束取值只能是某几个字符串中的一个 “类型别名与字符串字面量类型都是使用 type 进行定义” type Pos = 'left' | 'right'; function loc(...函数定义 2.函数表达式 一个函数有输入和输出,要在 TypeScript 中对其进行约束,需要把输入和输出都考虑到 // 1.直接声明 function person2(name: string):...} let sum: Sum = (a,b)=>a+b sum(1,2) “在 TypeScript 的类型定义中,=> 用来表示函数的定义,左边是输入类型,需要用括号括起来,右边是输出类型。”

    60910

    类型即正义:TypeScript 从入门到实践(二):函数、交叉联合类型与类型守卫

    实际上函数主要的部分就是输入和输出,所以我们在注解函数的时候只需要注解函数的参数和返回值就可以了,因为上述的函数体内是是执行 x+y 操作,以我们的 x 和 y 应该都是 number 数字类型,返回值也是...,数组的项是一个对象,对象包含两个属性 suit 和 card ,它们的类型分别为 string 和 number ;接着返回值类型为 number 类型,这个对应 x 的类型为 object 时,返回类型为...第二个重载,我们给参数 x 赋值了一个 number 类型,然后返回值类型是一个对象,它有两个属性 suit 和 card ,对应的类型为 string 和 number ;这个对应 x 的类型为 number...小结 这一小节中我们学习了交叉类型和联合类型,它们是 TS 类型系统中的类型运算的产物,交叉类型是多个类型组成一个类型,最终结果类型是多个类型的总和,而联合类型是多个类型组成一个综合体,最终的结果类型是多个类型之中的某一个类型...,这里我们需要注解参数列表和返回值,因为 onClick 函数内部执行点击逻辑,不需要返回值,所以我们给它注解了 void 类型,针对参数列表,todoId 比较简单,一般是字符串,所以注解为 string

    2.7K20

    什么是 TypeScript 4.1 中的模板字面类型?

    : boolean }; 如果你想创建新键或过滤掉键,TypeScript 4.1 允许你使用新的 as 子句重新映射映射类型中的键: type MappedTypeWithNewKeys =...递归条件类型 另一个新增功能是递归条件类型,它允许它们在分支中引用自己,从而能够更灵活地处理条件类型,使得编写递归类型别名更加容易。...要解决这个问题,必须在 Promise 中给 resolve 提供至少一个值,否则,在确实需要不带参数的情况下调用 resolve() 的情况下,必须使用显式的 void 泛型类型参数声明 Promise...为了更好的性能,在TypeScript 4.1中,返回的类型有时使用全部可选属性: { x: number; name?: string; age?...: string; } 不匹配的参数将不再关联 过去,彼此不对应的参数在 TypeScript 中通过将它们与 any 类型关联而彼此关联。

    3.9K10

    TypeScript很麻烦,不想使用!

    : boolean; /** * 定义组件的大小,可选值为 small(小)、middle(中)或 large(大) */ size?...五、处理参数数量和类型不固定的函数 审查团队成员封装的函数时,我发现当函数的参数数量不固定、类型不同或返回值类型不同时,他们倾向于使用any定义参数和返回值。...他们解释说,他们只知道如何定义参数数量固定、类型相同的函数,对于复杂情况则不知所措,而且不愿意将函数拆分为多个函数。 这正是函数重载发挥作用的场景。...通过函数重载,我们可以在同一函数名下定义多个函数实现,根据不同的参数类型、数量或返回类型进行区分。...如果你在使用TypeScript过程中遇到任何问题,不清楚应该使用哪种语法或技巧来解决,欢迎在评论区留言。我们一起探讨,共同解决TypeScript中遇到的挑战。

    25910

    React + TypeScript 实践

    } ) Hooks useState 大部分情况下,TS 会自动为你推导 state 的类型: // `val`会推导为boolean类型, toggle接收boolean类型参数...,可以直接使用 React.SyntheticEvent,如果目标表单有想要访问的自定义命名输入,可以使用类型扩展 import * as React from 'react' const App:...: 加法、减法、只读和可选修饰符 x ? Y : Z: 用于泛型类型、类型别名、函数参数类型的条件类型 !...为事件处理函数的类型定义,函数接收一个 event 对象,并且其类型为接收到的泛型变量 E 的类型, 返回值为 void 关于为何是用 bivarianceHack 而不是(event: E): void...最后调用 getResponse 方法会返回一个 promise 类型,通过 then 调用,此时 then 方法接收的第一个回调函数的参数 response 的类型为,{ message: string

    6.5K60

    typescript4.2新特性

    2021年2月23日,微软发布了typescript4.2版本,我们来看一下有哪些新的特性 更加智能的保留类型别名 TypeScript可以使用type定义一个类型,用来标识某个变量的类型,并且可以自动推断出赋值后新变量的类型...当你从一个或多个联合类型创建新的联合类型时,它会将这些类型转成新的扁平化联合类型,但是这样做会丢失原有的类型信息。...在TypeScript 4.2中,内部结构就变得更加智能了,你可以在 TS Playground 中切换编译版本为4.2,你会发现类型推断很完美,如下图所示: 不可跟踪的rest元素 TS中我们可以用元组类型去标识一个数组的类型...,例如: let a: [string, number, boolean] = ['hello world', 10, false]; 但是以上写法,元组中参数的个数是固定的,但如果number的数量是不固定的呢..."foo" in 42 元组展开限制 TypeScript中可以使用扩展语法(...)来创建新的元组类型。

    89810

    30个小知识让你更清楚TypeScript

    3、TypeScript 的内置数据类型有哪些? 数字类型:用于表示数字类型的值。TypeScript 中的所有数字都存储为浮点值。...只需输入以下命令,即可将 TypeScript 编译器安装到你的 Node.js 中: npm i -g typescript 8、TypeScript 中的类型断言是什么?...你还可以使用一元运算符+将字符串转换为最合适的数字类型,“3”成为整数,3而“3.14”成为浮点数3.14。...其余参数允许你将不同数量的参数(零个或多个)传递给函数。当你不确定函数将接收多少参数时,这很有用。其余符号之后的所有参数...都将存储在一个数组中。...要在 TypeScript 中重载函数,只需创建两个名称相同但参数/返回类型不同的函数。两个函数必须接受相同数量的参数。这是 TypeScript 中多态性的重要组成部分。

    4.8K20

    30道TypeScript 面试问题解析

    3、TypeScript 的内置数据类型有哪些? 数字类型:用于表示数字类型的值。TypeScript 中的所有数字都存储为浮点值。...只需输入以下命令,即可将 TypeScript 编译器安装到你的 Node.js 中: npm i -g typescript 8、TypeScript 中的类型断言是什么?...你还可以使用一元运算符+将字符串转换为最合适的数字类型,“3”成为整数,3而“3.14”成为浮点数3.14。...其余参数允许你将不同数量的参数(零个或多个)传递给函数。当你不确定函数将接收多少参数时,这很有用。其余符号之后的所有参数...都将存储在一个数组中。...要在 TypeScript 中重载函数,只需创建两个名称相同但参数/返回类型不同的函数。两个函数必须接受相同数量的参数。这是 TypeScript 中多态性的重要组成部分。

    4.4K20

    React + TypeScript 实践

    } ) Hooks useState 大部分情况下,TS 会自动为你推导 state 的类型: // `val`会推导为boolean类型, toggle接收boolean类型参数...,可以直接使用 React.SyntheticEvent,如果目标表单有想要访问的自定义命名输入,可以使用类型扩展 import * as React from 'react' const App:...: 加法、减法、只读和可选修饰符 x ? Y : Z: 用于泛型类型、类型别名、函数参数类型的条件类型 !...为事件处理函数的类型定义,函数接收一个 event 对象,并且其类型为接收到的泛型变量 E 的类型, 返回值为 void 关于为何是用 bivarianceHack 而不是(event: E): void...最后调用 getResponse 方法会返回一个 promise 类型,通过 then 调用,此时 then 方法接收的第一个回调函数的参数 response 的类型为,{ message: string

    5.4K20

    30个小知识让你更清楚TypeScript

    3、TypeScript 的内置数据类型有哪些? 数字类型:用于表示数字类型的值。TypeScript 中的所有数字都存储为浮点值。...只需输入以下命令,即可将 TypeScript 编译器安装到你的 Node.js 中: npm i -g typescript 8、TypeScript 中的类型断言是什么?...你还可以使用一元运算符+将字符串转换为最合适的数字类型,“3”成为整数,3而“3.14”成为浮点数3.14。...其余参数允许你将不同数量的参数(零个或多个)传递给函数。当你不确定函数将接收多少参数时,这很有用。其余符号之后的所有参数...都将存储在一个数组中。...要在 TypeScript 中重载函数,只需创建两个名称相同但参数/返回类型不同的函数。两个函数必须接受相同数量的参数。这是 TypeScript 中多态性的重要组成部分。

    3.6K20

    TypeScript入门

    (0.8) 2014-10:Angular 发布了基于 TypeScript 的 2.0 版本 2015-04:微软发布了 Visual Studio Code 2016-05:@types/react...# 基础数据类型 /* 字符串 */ const q: string = 'string'; /* 数字 */ const w: number = 1; /* 布尔值 */ const e: boolean...=> number = (x, y) => x * y; # 函数重载 /* 对 getDate 函数进行重载,timestamp 为可缺省参数 */ function getDate(type: '...: T[P]; } // 索引类型:关键字【keyof】,其相当于取值对象中的所有 key 组成的字符串字面量,如 type IKeys = keyof { a: string; b: number...类型 A: 类型 B // 关键字【infer】出现在类型推荐中,表示定义类型变量,可以用于指代类型 // 如该场景下,将函数的返回值类型作为变量,使用新泛型 R 表示,使用在类型推荐命中的结果中

    1.5K20

    9102年,隔壁公司新来的女实习生问我什么是TypeScript ?

    它有时被称做“鸭式辨型法”或“结构性子类型化”。 在TypeScript里,接口的作用就是为这些类型命名和为你的代码或第三方代码定义契约。...比如,我们使用下面的代码重写上面的例子: let mySearch: SearchFunc; mySearch = function(src: string, sub: string): boolean...T帮助我们捕获用户传入的类型(比如:number),之后我们就可以使用这个类型。 之后我们再次使用了 T当做返回值类型。现在我们可以知道参数类型与返回值类型是相同的了。...这允许我们跟踪函数里使用的类型的信息。 其他的API可以去刷文档,下面说重点: 工程化环境: typescript遇上了webpack React官方推荐使用typescript ?...使用传统的 react脚手架 在 Create React App 中使用 TypeScript npx create-react-app my-app --typescript typescript

    71820

    Antd源码浅析(一)Icon组件

    ,一般的Typescript文件是以 .ts 结尾,但相对于React的jsx文件,Typescript产生了 .tsx 的文件,其实就是Typescript的jsx写法,实际生产环境中,最终都要编译成...,作用和React中的 PropTypes 相同,确保你接收到的数据是有效的,能够在识别些某些类型问题,所以React官方也建议,对于更大的代码库使用Flow或者TypeScript来替代 PropTypes...代表参数可选,对于 React.MouseEventHandler 和 React.CSSProperties 是TypeScript为React定义的数据类型, 为泛型标识,我们不妨以...React.MouseEventHandler 为例子深入看一下TypeScript实现的事件类型定义,如果不理解,可以简单理解为一种数据类型。...: Antd组件实现的基本结构和思路 组件对于参数的校验的方式 优雅的处理 classNames 省略一些不必要的参数

    2K30
    领券