Typescript基础使用

typescript的类型限制

布尔值

let isDone: boolean = false;

数字

和JavaScript一样,TypeScript里的所有数字都是浮点数。 这些浮点数的类型是 number。 除了支持十进制和十六进制字面量,TypeScript还支持ECMAScript 2015中引入的二进制和八进制字面量。

let decLiteral: number = 6;
let hexLiteral: number = 0xf00d;
let binaryLiteral: number = 0b1010;
let octalLiteral: number = 0o744;

字符串

JavaScript程序的另一项基本操作是处理网页或服务器端的文本数据。 像其它语言里一样,我们使用 string表示文本数据类型。 和JavaScript一样,可以使用双引号( ")或单引号(')表示字符串。

let name: string = `Gene`;
let age: number = 37;
let sentence: string = `Hello, my name is ${ name }.

I'll be ${ age + 1 } years old next month.`;

数组

TypeScript像JavaScript一样可以操作数组元素。 有两种方式可以定义数组。 第一种,可以在元素类型后面接上 [],表示由此类型元素组成的一个数组:

let list: number[] = [1, 2, 3];

或者也可以使用数据泛型,Array<元素类型>

let list: Array<number> = [1, 2, 3];

元组Tuple

元组类型允许表示一个已知元素数量和类型的数组,各元素的类型不必相同。 比如,你可以定义一对值分别为 stringnumber类型的元组。

// Declare a tuple type
let x: [string, number];
// Initialize it
x = ['hello', 10]; // OK
// Initialize it incorrectly
x = [10, 'hello']; // Error

当访问一个已知索引的元素,会得到正确的类型:

console.log(x[0].substr(1)); // OK
console.log(x[1].substr(1)); // Error, 'number' does not have 'substr'

当访问一个越界的元素,会使用联合类型替代(当访问超出元素数目的索引值时,索引值的类型为联合类型):

x[3] = 'world'; // OK, 字符串可以赋值给(string | number)类型

console.log(x[5].toString()); // OK, 'string' 和 'number' 都有 toString

x[6] = true; // Error, 布尔不是(string | number)类型

 任意类型Any

在任意值*问任何属性都是允许的:

let anyThing: any = 'hello';
console.log(anyThing.uname);
console.log(anyThing.uname.firstName);

也允许调用任何方法:

let anyThing: any = 'hello';
anyThing.setName('muzidigbig');
anyThing.setName('muzidigbig').sayHello();
anyThing.name.setFirstName('Lee');

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

let someThing;
// 等价于 let someThing: any;
 
someThing = 'seven';
someThing = 7;
 
someThing.setName('muzidigbig');

未指定其类型进行初始赋值

会根据初始值推断类型

var num = 2;  //类型推断为 number
console.log(typeof num);
num = '12'; //编译错误
//error TS2322: Type '"12"' is not assignable to type 'number'.
console.log(typeof num);

 

上一篇:学生精选阿里云服务器价格表


下一篇:TypeScript学习 (第四天) 数组表示