首页 > 编程知识 正文

typescript中enum是值类型

时间:2023-05-03 23:43:04 阅读:242019 作者:980

一、原始数据类型

1.原始javascript基本数据类型(六种)

number、string、boolean、undefined、null、symbol

2.布尔值类型: boolean

let isDone: boolean = false;  //oklet isDone: boolean = Boolean(false); //oklet isDone: boolean = new Boolean(false); //error  

3.数值类型: number

let decLiteral: number = 6;let notANumber: number = NaN;let infinityNumber: number = Infinity;// ES6 中的二进制表示法let binaryLiteral: number = 0b1010;// ES6 中的八进制表示法let octalLiteral: number = 0o744;

4.字符串类型: string

let myName: string = 'Tom';

5.空值: void

function printName(): void {    console.log('My name is Tom');}//声明一个 void 类型的变量没有什么用,因为你只能将它赋值为 undefined 和 null:let unusable: void = undefined;

6.空和未定义:Null和Undefined

let u: undefined = undefined;let n: null = null;//void 的区别是,undefined 和 null 是所有类型的子类型。也就是说 undefined 类型的变量,可以赋值给 number 类型的变量:// 这样不会报错let num: number = undefined;// 这样也不会报错let u: undefined;let num: number = u;


而 void 类型的变量不能赋值给 number 类型的变量:

let u: void;let num: number = u;// error: index.ts(2,5): error TS2322: Type 'void' is not assignable to type 'number'.
二、任意值

1.概述:如果是一个普通类型,在赋值过程中改变类型是不被允许的,但如果是 any 类型,则允许被赋值为任意类型。如下例所示:

//普通类型let myFavoriteNumber: string = 'seven';myFavoriteNumber = 7; // index.ts(2,1): error TS2322: Type 'number' is not assignable to type 'string'.//任意值类型let myFavoriteNumber: any = 'seven';myFavoriteNumber = 7;  // ok


2.任意值的属性和方法:

概述:声明一个变量为任意值之后,对它的任何操作,返回的内容的类型都是任意值

//访问任何属性let anyThing1: any = 'hello';console.log(anyThing1.myName);console.log(anyThing1.myName.firstName);//访问任何方法let anyThing2: any = 'Tom';anyThing2.setName('健康的早晨').sayHello();anyThing2.myName.setFirstName('Cat');

3.未声明类型的变量

概述:变量如果在声明的时候,未指定其类型,那么它会被识别为任意值类型

let something;something = 'seven';something = 7; // ok something.setName('Tom'); //ok 三、类型推论

概述:如果没有明确的指定数据类型,那么TS会依照类型推论的规则推断出一个类型

//被类型推论推论成string类型let myFavoriteNumber = 'seven';myFavoriteNumber = 7; // error//上面的式子等价于let myFavoriteNumber: string = 'seven';myFavoriteNumber = 7; //error 四、联合类型

概述:联合类型表示取值可以为多种类型中的一种,使用 | 分隔每个类型

//允许 myFavoriteNumber 的类型是 string 或者 number,但是不能是其他类型let myFavoriteNumber: string | number;myFavoriteNumber = 'seven'; // okmyFavoriteNumber = 7; // okmyFavoriteNumber = true; // error

1.访问联合类型的属性或者方法

概述:当 TypeScript 不确定一个联合类型的变量到底是哪个类型的时候,就只能访问此联合类型的所有类型里共有的属性或方法

function getLength(something: string | number): number {    return something.length; //error : property 'length' does not exist on type 'number'}//访问 string 和 number 的共有属性是没问题的function getString(something: string | number): string {    return something.toString(); // ok}

2.联合类型的变量赋值

概述:联合类型的变量在被赋值的时候,会根据类型推论的规则推断出一个类型

let myFavoriteNumber: string | number;myFavoriteNumber = 'seven';console.log(myFavoriteNumber.length);  // 5myFavoriteNumber = 7;console.log(myFavoriteNumber.length);  // error

 

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。