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

TypeScript 初学者入门学习笔记(一)

TypeScript类型系统,很大程度上弥补了 JavaScript 的缺点。 为什么使用 TypeScript?...接口(Interfaces):可以用于对``对象的形状Shape`进行描述 泛型(Generics):定义函数,接口或类预先指定具体的类型,而是使用指定类型的一种特性 类(Classes)...line4:data 被推断为 number,访问length 属性报错。 对象类型——接口 TS中,使用接口(Interfaces)来定义对象类型。...对象中的一些字段只能在创建被赋值,可以使用 **readonly **定义只读属性: 例一:使用 readonly 定义的属性 id 初始化后,又被重新赋值,所以会报错。...类型 + 方括号 表示 最简单的方法是使用类型 + 方括号表示数组: let arr: number[] = [1, 1, 2]; // 数组元素中不允许出现其他的类型 let arr1:

1.8K20

TypeScript入门

*/ const t: undefined = undefined; # 对象类型 const bytedancer: IBytedancer = { jobId: 9303245,...date.toLocaleString() : date; } # 数组类型 /*「类型方括号表示 */ type IArr1 = number[]; /* 泛型表示 */ type IArr2...类型 “IB” 上不存在属性 “a" */ /* 结论:访问联合类型,处于程序安全,仅能访问联合类型中的交集部分 */ if (arg.a) { console.log...: T[P]; } // 索引类型:关键字【keyof】,其相当于取值对象中的所有 key 组成的字符串字面量,如 type IKeys = keyof { a: string; b: number...类型 A: 类型 B // 关键字【infer】出现在类型推荐中,表示定义类型变量,可以用于指代类型 // 如该场景下,将函数的返回值类型作为变量,使用新泛型 R 表示使用类型推荐命中的结果中

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

TypeScript学习笔记(二)—— TypeScript基础

): let unusable: void = undefined; 2.5、Null 和 Undefined TypeScript 中,可以使用 null 和 undefined 来定义这两个原始数据类型...表示负无穷大(溢出返回) POSITIVE_INFINITY 表示正无穷大(溢出返回) prototype 允许您向对象添加属性和方法 三、任意值 typescript中,当我们不确定一个类型是什么类型的...六、对象类型——接口 TypeScript 中,我们使用接口(Interfaces)来定义对象类型。...7.1、「类型 + 方括号表示 最简单的方法是使用类型 + 方括号」来表示数组: let fibonacci: number[] = [1, 1, 2, 3, 5]; 数组的项中不允许出现其他的类型...: NumberArray = [1, 1, 2, 3, 5]; NumberArray 表示:只要索引类型是数字,那么值的类型必须是数字。

5K20

TypeScript 演化史 — 第九章】object 类型 和 字符串索引签名类型的点属性

当咱们试图访问此类对象上的任意属性TypeScript 会提示编译错误 // Type {} const obj = {}; // Error: 类型“{}”上不存在属性“prop” obj.prop...Object]" obj.toString(); 字符串索引签名类型的点属性 TypeScript 2.2 之前,如果想访问带有字符串索引签名的类型的任意属性,就必须使用[]符号,但不允许使用.符号访问...类型使用使用.符号访问未知属性仍然是一个错误,因此,对于以下代码,TypeScript 2.2 仍然会给出一个编译错误: const portNumbers = {}; // OK portNumbers... JS 中访问属性,大多数时候将使用表示,但也可以使用括号表示作为转义。 有了这个较松的限制,对于常用JS 开发的人员来说更容易使用。...给定适当的字符串索引签名,在这些情况下,就会获得更少的类型错误,并且不再需要使用类型注释注释点属性访问,这只是为了让编译器通过。

1.4K30

TypeScript 演化史 -- 9】object 类型 和 字符串索引签名类型的点属性

当咱们试图访问此类对象上的任意属性TypeScript 会提示编译错误 // Type {} const obj = {}; // Error: 类型“{}”上不存在属性“prop” obj.prop...Object]" obj.toString(); 字符串索引签名类型的点属性 TypeScript 2.2 之前,如果想访问带有字符串索引签名的类型的任意属性,就必须使用[]符号,但不允许使用.符号访问...类型使用使用.符号访问未知属性仍然是一个错误,因此,对于以下代码,TypeScript 2.2 仍然会给出一个编译错误: const portNumbers = {}; // OK portNumbers... JS 中访问属性,大多数时候将使用表示,但也可以使用括号表示作为转义。 有了这个较松的限制,对于常用JS 开发的人员来说更容易使用。...给定适当的字符串索引签名,在这些情况下,就会获得更少的类型错误,并且不再需要使用类型注释注释点属性访问,这只是为了让编译器通过。

1.2K10

说说我对 TypeScript 索引签名 理解

答案是使用一个索引签名! 接着,我们来看看什么是 TypeScript 索引签名以及何时需要它们。 1.什么是索引签名 索引签名的思想是只知道键和值类型的情况下对结构未知的对象进行类型划分。...索引签名语法 索引签名的语法相当简单,看起来与属性的语法相似,但有一点不同。我们只需方括号内写上键的类型,而不是属性名称:{ [key: KeyType]: ValueType }。...3.1不存在的属性 如果试图访问一个索引签名为 { [key: string]: string } 的对象的一个不存在的属性,会发生什么?...当在属性访问器中作为键使用时,JavaScript隐式地将数字强制为字符串(names[1]与names['1']相同)。TypeScript也会执行这个强制。...建议使用索引签名来注释通用对象,例如,键是字符串类型

1.6K20

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

类型推断 let d = -99 //TypeScript会推断出变量d的类型是数字 d = false //警告:不能将类型“boolean”分配给类型“number 3....,直接说结论:类型限制, Object ⼏乎⽤,因为范围太⼤了,⽆意义。...”分配给类型“object” a = '你好' // 警告:不能将类型“string”分配给类型“object” Object 的含义: Object 的实例对象,限制的范围太⼤了,⼏乎⽤。...” a = undefined // 警告:不能将类型undefined”分配给类型“Object” 实际开发中,限制⼀般对象,通常使⽤以下形式 // 限制person对象的具体内容,使⽤【,】分隔,...泛型 定义⼀个函数或类,有些情况下⽆确定其中要使⽤的具体类型(返回值、参数、属性类型不能确 定),此时就需要泛型了 举例: 就是泛型,(⼀定⾮叫 T ),设置泛型后即可在函数中使⽤ T 来表示类型

8510

JavaScript编程精解(一)

可存储的数字范围是1900万亿,可以使用带e(指数)的科学技术,2.998e8=2.99800000 2.使用小数精度不高 3.JS中三个特殊的值:Infinity、-Infinity和NaN,前两个表示无穷大和负无穷大...减号运算符即可用作一元运算符,也可用作二元运算符 D.未定义值 1.null和undefined,用于表示无意义的值。它们各自表示其自身含义,除些之外包含任何信息。.../3.html 四、数据结构:对象和数组 A.JS中两种最为常用的访问属性的方法:使用点(.)和方括号[]。...()对象中的一个特殊变量this会指向当前方法所属的对象 B.原型 1.当开发人员访问一个对象包含的属性,就会从对象原型中搜索属性,接着是原型的原型,依此类推。...E.原型污染 1.可以使用Object.defineProperty函数定义自己的不可枚举属性,该函数允许我们创建属性控制属性类型 2.使用对象的hasOwnProperty方法确定自身是否包含某个属性而不会搜索原型

70630

Web前端面试敲重点知识,14个TypeScript核心基础面试题和答案

8、如何在 TypeScript 中创建对象 ? 9、如何在 TypeScript 中指定可选属性 ? 10、说说枚举 TypeScript 中是如何工作的 ? 11、什么是参数解构 ?...void 表示变量没有类型,它充当与任何相反的类型,它在返回值的函数中特别有用 如果变量是 void 类型,则只能将 null 或 undefined 值分配给该变量。...它们类似于数组,有时也称为关联数组 但是,数组使用数字来索引值,而对象允许使用任何其他类型作为键 image.png 9、如何在 TypeScript 中指定可选属性 ? 通过添加 ?...对象类型可以具有零个或多个可选属性属性名称之后 image.png 10、说说枚举 TypeScript 中是如何工作的 ?...扩展容器类的外部代码无法访问受保护的成员。 private:私有成员仅在类内部可见,没有外部代码可以访问类的私有成员。 14、TypeScript 支持静态类吗 ?为什么 ?

11.4K10

一篇朴实的文章带捋完TypeScript基础,方法是正反对比!

原始数据类型包括:布尔值、数值、字符串、null、undefined 以及 ES6 中的新类型 Symbol 本节主要介绍前五种原始数据类型 TypeScript 中的应用。...布尔值是最基础的数据类型 TypeScript 中,使用 boolean 定义布尔值类型: 以下都编译通过的,并且给出了说明,一句话总结,是什么类型就要赋值给什么类型,这句话够俗了吧 正确的写法 /...let binaryLiteral: number = 0b1010; // ES6 中的八进制表示 let octalLiteral: number = 0o744; let notANumber...,可以使用如下方式:旦定义了任意属性,那么确定属性和可选属性类型都必须是它的类型的子集 interface Person { name: string; age?...,可以在任何地方被访问到,默认所有的属性和方法都是 public 的 private 修饰的属性或方法是私有的,不能在声明它的类的外部访问 protected 修饰的属性或方法是受保护的,它和 private

1.1K20

TypeScript 4.2 正式发布:更智能的类型别名保留,声明缺失的帮助函数,还有许多破坏性更新

in操作符右侧使用一个非对象类型是一个运行时错误。...引入新标志 当 TypeScript 第一次引入索引符号,你只能使用方括号包括的”元素获取语法(如person["name"])来获取它们声明的属性。...; } } 为了这些情况更简单,不久前,TypeScript 允许当一个类型有一个字符串索引符号使用“点式”属性访问语法(如person.name)。...#sideLength ** 2; } } // Works fine. new Square(42); 为了确保新建abstract类始终应用此限制,你不能将abstract类分配给任何需要构造符号的对象...尽管很明显movieWatchCount中肯定有一些字符串不存在,但是由于undefined的存在,TypeScript 的早期版本认为对象的可选属性不能用兼容索引符号赋值。

3.2K20

初探 TypeScript函数基本类型泛型接口类内置对象

: 参数类型和返回值类型 TypeScript类型定义中, => 用来表示函数的定义,左边是输入类型,需要用括号括起来,右边是输出类型,和 ES6 的箭头函数不一样 可选参数和默认参数 TypeScript... JavaScript 的类型分为两种:原始数据类型(Boolean,number,string,null,undefined,Synmbol)和对象类型 TypeScript 中原始类型数据也是使用...+ 方括号 表示 let fibonacci:number[] = [1,2,3,4]//只能传number类型的,否则会提示错误 复制代码 2.数组泛型 (=> 跳到泛型去学习) let fibinacci...} 复制代码 undefined 和 null ,它们的本身的类型用处不是很大: Never 类型表示的那些永远不存在的值类型 断言 as 相信我,我知道自己干什么 let someValue...我们引用的任何一个类成员的时候都用了 this,他表示我们访问的是类成员 类( Class ):定义一件事情的抽象特点,包括他的属性和方法 对象( Object ):类的实例,通过 new 生成

7.2K31

TypeScript超详细入门教程(上)

// error 不能将类型“123”分配给类型“object” 这里有一点要注意了,你可能会想到给 obj 指定类型为 object 对象类型,然后给它赋值一个对象,后面通过属性访问操作符访问这个对象的某个属性...); // undefined 通过上面的例子可以看到,我们访问属性名为 symbol 类型值的 name ,我们不能使用点’....可以看到,使用 with 传入一个对象后,代码块中访问对象属性就不需要写对象了,直接就可以用它的属性。...我们使用枚举值的元素值,就像访问对象属性一样,你可以使用’.‘操作符和’[]’两种形式访问里面的值,这和对象一样。...,可以在运行时使用,如果我们在运行时用不到,可以定义枚举在前面加上const来选择生成对象,而是直接将值替换到响应位置。

4.1K41

深入浅出 TypeScript

TypeScript 的类中,成员都默认为 public, 被此限定符修饰的成员是「可以被外部访问」。 当成员被设置为 private之后, 被此限定符修饰的成员是「只可以被类的内部访问」。...「索引类型」进行实现 ,我们用「索引类型」 keyof T 把传入的对象属性类型取出生成一个「联合类型」,这里的泛型 U 被约束在这个「联合类型」中。...高级类型 索引类型 先来了解两个类型操作符:「索引类型查询操作符」和「索引访问操作符」。...,Union 类型中的值用作类型属性。...:脚本执行期间访问的额外的全局变量 总结 以上就是通读完小册后整理的笔记,接下来要开始通读TypeScript官方文档,下篇见。

2.7K30

深度讲解TS:这样学TS,迟早进大厂【09】:数组的类型

TS系列地址: 21篇文章带你玩转ts # 数组的类型 TypeScript 中,数组类型有多种定义方式,比较灵活。...「类型 + 方括号表示§ 最简单的方法是使用类型 + 方括号」来表示数组: let fibonacci: number[] = [1, 1, 2, 3, 5]; 数组的项中不允许出现其他的类型:...数组的一些方法的参数也会根据数组定义约定的类型进行限制: let fibonacci: number[] = [1, 1, 2, 3, 5]; fibonacci.push('8'); // Argument...= [1, 1, 2, 3, 5]; NumberArray 表示:只要索引类型是数字,那么值的类型必须是数字。...number]: number; length: number; callee: Function; } = arguments; } 在这个例子中,我们除了约束当索引类型是数字

51230

TypeScript 4.2 Beta版本发布:带来诸多更新,营造更好的开发体验

TypeScript 首次引入索引签名,你只能使用“中括号”的元素访问语法(如 person["name"])来获得它们声明的属性。...[propName: string]: any; } function doStuff(value: SomeType) { let x = value["someProperty"]; } 需要使用具有任意属性对象...; } } 为了简化这类场景的操作,前不久 TypeScript 类型带有一个字符串索引签名加入了“点”属性访问语法(例如 person.name)。...有关更多信息,请查看原始的拉取请求: https://github.com/microsoft/TypeScript/pull/40011 可选属性和字符串索引签名之间的规则放宽 字符串索引签名是一种类型化字典型对象的方式...很明显,movieWatchCount 中肯定不存在某些字符串,但由于存在 undefined,以前版本的 TypeScript 仍将可选对象属性视为无法分配给其他兼容的索引签名。

1.6K10

TypeScript 学习笔记(一)

安装 需要有node环境,通过npm安装 npm install -g typescript 编码 使用 .ts 文件扩展名, 使用 typescript 编写使用 React 使用 .tsx 扩展名...:当访问超出元祖长度的元素,它的类型会被限制为元祖中每个类型的联合类型 let arr:[string, number] = ['name', 20]; arr[0] = 'age'; arr[2]...); // Error 内置对象 JavaScript 中有很多内置对象,它们可以直接在 TypeScript 中当做定义好了的类型。...表示取值可以为多种类型中的一种,使用 | 分隔每个类型 let stringOrNumber:string | number; stringOrNumber = 'seven'; 当 TypeScript...public 公有属性或方法,可以在任何地方被访问到,默认所有的属性和方法都是 public的 private 私有属性或方法,不能在声明它的类的外部访问,也不可以子类中访问 protected 受保护的属性或方法

2.7K10

TypeScript 快速入门(基础篇)

它是 JavaScript 的一个超集,TypeScript JavaScript 的基础上添加了可选的静态类型和基于类的面向对象编程。...0 console.log(s) // 5 , 可以修改下标索引 # 定义 # 枚举就是 可以方便的 读出某个属性是什么, 定义一次,可多次使用 任意类型 any any 为 任意类型,..., 222, false ] # 使用场景:当你不知道类型 或 一个对象 或数据 需要多个类型使用any undefined 类型 let num:number | undefined ; console.log...} const aa = getAny() console.log(aa)//999 'Hello TypeScript' 类型检测 类型推断 变量的声明和初始化同一行,可以省去类型的声明 const...:类型):类型 {} 2.使用场景:使用的时候,不知道是否应该传递该参数,就可以使用 可选参数 默认参数格式: 1.函数名 (变量名:类型 = 默认值) {} 使用场景:如果在调用函数,不需要传递其它参数

92220
领券