TypeScript学习(二)——数据类型一
程序员文章站
2022-07-12 16:31:23
...
JavaScript类型:原始数据类型和对象数据类型
原始数据类型:布尔值、数值、字符串、null、undefined、Symbol(ES6中的新类型)。
布尔值
使用boolean定义布尔值类型:
let bol: boolean = false;
在TypeScript中,boolean是JS中的基本类型,而Boolean是JS中的构造函数。
数值
使用number定义数值类型:
let aNumber: number = 6;
字符串
使用String定义字符串类型:
let aString:string = 'aa';
let sentence: string = `Hello,this is ${aString}`; //模板字符串
注: ` 用来定义模板字符串,${expr}用来在模板字符串中嵌入表达式。
空值
JS中没有空值(void)的概念,在TypeScript中表示没有任何返回值的函数:
function alertName(): void {
alert('What is your name?');
}
Null 和Undefined
在 TypeScript 中,可以使用 null 和 undefined 来定义这两个原始数据类型:
let u: undefined = undefined;
let n: null = null;
undefined类型的变量只能被赋值为undefined,null类型的变量只能被赋值为null。
undefined和null是所有类型的子类型。undefined类型的变量,可以赋值给number类型的变量。
let num: number = undefined;
任意值
Any用来表示允许赋值为任意类型。
普通的类型在赋值过程中不允许改变类型,any类型允许被赋值为任意类型:
let a: any = 'good';
a = 7;
在任意值上允许访问任何属性以及调用任何方法。
声明一个变量为任意值后,对它的任何操作,返回的内容的类型都是任意值。
类型推论
如果没有明确的指定类型,TypeScript会依照类型推论的规则推断出一个类型。
let a = 'good'; //没有指定类型,默认为string
let b = 2; //没有指定类型,默认为number
联合类型
表示取值可以是多种类型中的一种。
let a: string | number; //表示a只能赋string和number类型的值
a = 'good';
a = 2;
function getLength(something: string | number): number {
return something.length;//在不知道something的确切类型时,只能访问此联合类型的共有的属性和方法,但是.length方法只在string类型中有,而number中没有,报错。
}
联合类型的变量在被赋值的时候,会根据类型推论的规则推断出一个类型:
let myFavoriteNumber: string | number;
myFavoriteNumber = 'seven';//类型推断为string
console.log(myFavoriteNumber.length); // 5,正确
myFavoriteNumber = 7;
console.log(myFavoriteNumber.length); // 编译时报错