var [变量名] : [类型] = 值;
例如:
var uname:string = "hello";
原始类型数据(注意大小写)
原始数据类型包括:布尔值(boolean)、数值(number)、字符串(string)、null
、undefined
以及 ES6 中的新类型 Symbol
和 BigInt
。
空值void
在 TypeScript 中,可以用 void
表示没有任何返回值的函数:
function alertName(): void {
alert('My name is Tom');
}
let unusable: void = undefined;//声明一个 void 类型的变量没有什么用,因为你只能将它赋值为 undefined 和 null
任意值any
如果是一个普通类型,在赋值过程中改变类型是不被允许的,但如果是 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;
//正确
在任意值any上访问和调用任何属性都是允许的:
let anyThing: any = 'hello';
console.log(anyThing.myName.firstName);
anyThing.setName('Jerry').sayHello();
anyThing.myName.setFirstName('Cat');
联合类型
联合类型(Union Types)表示取值可以为多种类型中的一种
let myFavoriteNumber: string | number;
myFavoriteNumber = 'seven';
myFavoriteNumber = 7;
访问联合类型的属性或方法:
当 TypeScript 不确定一个联合类型的变量到底是哪个类型的时候,我们只能访问此联合类型的所有类型里共有的属性或方法
function getLength(something: string | number): number {
return something.length;
}
// index.ts(2,22): error TS2339: Property 'length' does not exist on type 'string | number'.
// Property 'length' does not exist on type 'number'.
上例中,length
不是 string
和 number
的共有属性,所以会报错,正确方法:
function getString(something: string | number): string {
return something.toString();
}
联合类型的变量在被赋值的时候,会根据类型推论的规则推断出一个类型:
let myFavoriteNumber: string | number;
myFavoriteNumber = 'seven';
console.log(myFavoriteNumber.length); // 5
myFavoriteNumber = 7;
console.log(myFavoriteNumber.length); // 编译时报错
// index.ts(5,30): error TS2339: Property 'length' does not exist on type 'number'.