基础类型-basic-types
我们使用 : 指定变量的类型,: 的前后有没有空格都可以。
原始类型
-
boolean类型
boolean类型取值false、true
let bool1: boolean bool = false let bool2: boolean = true使用构造函数
Boolean创造的对象不是布尔值,事实上new Boolean()返回的是一个Boolean对象,直接调用Boolean也可以返回一个boolean类型;在 TypeScript 中,boolean是 JavaScript 中的基本类型,而Boolean是 JavaScript 中的构造函数。其他基本类型(除了null和undefined)一样,不再赘述。let createdByNewBoolean: boolean = new Boolean(1);//error let createdByNewBoolean: Boolean = new Boolean(1); let createdByBoolean: boolean = Boolean(1); -
number类型
let num: number = 2 -
string类型
let str1: string = 'mxm' let str2: string = `mxm` -
Array类型
let arr1: number[] = [1,2,3,4,5] let arr2: Array<number> = [1,2,3,4,5] let arr3: (string | number)[] = [1,2,3,'4'] -
元祖类型 Tuple
元组类型允许表示一个已知元素数量和类型的数组,各元素的类型不必相同,每个位置赋值时类型必须一一对应,不能多也不能少
let tuple1:[string,number,boolean] = ['1',2,false] let tuple2:[string,number,boolean] = ['1',2,false,false]//error -
枚举类型 enum
默认情况下从0开始编号,也可以手动指定,但是只可以递增,不可以递减,可以由枚举的值得到它的名字
const Roles = { super, admin = 3, user } console.log('enum',Roles.super,Roles[3])// admin -
Any类型
什么类型都可以进行赋值,但是不推荐使用,无意义
let value: any = '11111' let anyArr: any[] = [1,2,3,'4'] -
Void类型
表示没有任何类型,可以赋值undefined、null,一般函数什么也不返回的时候为void类型
let v: void = undefined let v: void = null const testfun = (test: string): void => {console.log(test)} -
undefined、null类型
undefined和null两者各自有自己的类型分别叫做undefined和null,默认情况下null和undefined是所有类型的子类型,就是说可以把他们赋值给number类型、string类型的变量,前提是在tsconfig.json中没有启用strictNullChecks,否则null和undefined只能赋值给void和它们各自let u: undefined = undefined; let n: null = null let num: number = undefined let v: void = undefined -
Never类型
永远也不可能存在的类型,一般抛出异常、不会有返回值的函数表达式、箭头函数表达式的返回值类型都是never类型,变量 也可能是never类型,never类型是任何类型的子类型,没有任何类型是nerver的子类型,即使any也不可以赋值给never类型
const errorFun = (message: string): never => {throw new Error(message)} const mapFun = (): never => { while(true){} } -
Symbol类型
概述
为一个对象添加属性时,保证属性名不冲突,es6中引入了
symbol原始类型,使对象中的属性名是一个独一无二的值;所有对象的属性名有两种类型:字符串与symbol;symbol是原始类型不能添加属性,它是类似于字符串的数字类型;symbol可以接收一个字符串作为参数,表示对symbol的描述;let s1 = Symbol("dog") let s2 = Symbol("cat") console.log('s',s1,s2)//Symbol("dog"),Symbol("cat") s1 === s2 //false //symbol参数是对象时,会调用对象的tostring()的方法 const obj = { toString() { return 'abc'; } }; const sym = Symbol(obj); sym // Symbol(abc) //Symbol 值不能与其他类型的值进行运算,可以转为string类型、boolean类型 let s3 = Symbol("string") String(s3) s3.toString() Boolean(s3)获取描述
传给Symbol的参数就是对Symbol的描述
let s = Symbol('describe') s.description//describe属性名的遍历
let s1 = Symbol('key1') let s2 = Symbol('key2') const obj = {[s1]:1,[s2]:2,key3:3} for (key in obj){ console.log(key)//'key3' } for(key of obj){ console.log(key)//'key3' } Object.keys(obj)//['key3'] Object.getOwnPropertyNames(obj)//["key3"] JSON.stringify(obj)//"{"key3":3}" Object.getOwnPropertySymbols(obj)//[Symbol('key1'),Symbol('key2')] Reflect.ownKeys(obj)//[Symbol('key1'),Symbol('key2'),'key3']Symbol.for()、Symbol.keyFor()
Symbol.for():它接受一个字符串作为参数,然后搜索有没有以该参数作为名称的 Symbol 值。如果有,就返回这个 Symbol 值,否则就新建一个以该字符串为名称的 Symbol 值,并将其注册到全局 ,可以用在不同的 iframe 或 service worker 中取到同一个值。
let s1 = Symbol.for('foo'); let s2 = Symbol.for('foo'); s1 === s2 //trueSymbol.keyFor():返回一个已登记的 Symbol 类型值的
keylet s1 = Symbol.for("foo"); Symbol.keyFor(s1) // "foo" let s2 = Symbol("foo"); Symbol.keyFor(s2) // undefined模块的 Singleton 模式
暂时无记录
内置的 Symbol 值
暂时无记录
非原始类型
-
Object类型
非原始类型
let obj = { name : 'ma' } function getobj(obj1: object): void{ console.log(obj1) } getobj(obj)
类型断言
类型断言是自己比编译器更清楚变量是什么类型,知道自己在干什么,类似于类型转换(不进行数据检查和结构),写法有两种:
const getLength = (param: string|number): number => {
console.log((<string>param).length)
return (param as string).length
}
本文深入探讨TypeScript中的各种基础类型,包括boolean、number、string、Array、Tuple、enum等,解析每种类型的特点和使用场景,同时介绍Any、Void、Never、Symbol等特殊类型的应用。
1803

被折叠的 条评论
为什么被折叠?



