概念:
功能:TypeScript的作者是安德斯·海尔斯伯格,C#的首席架构师。 它是开源和跨平台的编程语言。它是JavaScript的一个超集,而且本质上向这个语言添加了可选的静态类型和基于类的面向对象编程。扩展了JavaScript的语法,所以任何现有的JavaScript程序可以运行在TypeScript环境中。TypeScript是为大型应用的开发而设计,并且可以编译为JavaScript。
产生背景:由于JavaScript的局限性难以胜任大型项目的开发和维护。因此微软开发了TypeScript ,使得其能够胜任大型项目的开发。
开发:
安装:
使用npm命令安装
npm install -g typescript
安装typescript的插件(Visual Studio 2017和Visual Studio 2015 Update 3默认包含了TypeScript)
特性:
类型注解:一种为函数或变量添加约束的方式
functiongreeter(person:string)//使用:string表示期待传入的变量为字符串类型
{
return"Hello, "+person;
}
letuser=[0,1,2];
document.body.innerHTML=greeter(user);
接口(在TypeScript里,只在两个类型内部的结构兼容那么这两个类型就是兼容的。 这就允许我们在实现接口时候只要保证包含了接口要求的结构就可以,而不必明确地使用implements语句。)
作用:为类型命名和为代码定义契约
interface Person {
firstName: string;
lastName: string;
}
function greeter(person: Person) {
return "Hello, " + person.firstName + " " + person.lastName;
}
let user = { firstName: "Jane", lastName: "User" };
document.body.innerHTML = greeter(user);
可选属性
interface SquareConfig {
color?: string;
width?: number;
}
只读属性
interface Point {
readonly x: number;
readonly y: number;
}
类
基本类型
布尔值:
let isDone:boolean=false;
数字:都为浮点数,支持十进制、十六进制、二进制、八进制字面量
let isDone:number=1;
字符串(使用单引号或双引号包围,也可以使用模板字符串:使用反引号和保卫,通过${string}嵌入表达式)
let isDone:string='mmmmm';
isDone = 'kkk';
let isDone:string=`mmmmm`;
let a:string=`hh ${isDone}.
i ll`;//可实现换行
数组
let isDone:string[]=['mmmmm','hhh'];//表示使用字符串组成的数组
或
let list: Arraystring> = ['mmmmm','hhh'];
元组:可用来表示一个已知数量和类型的数组,每个元素的类型不用一样
// Declare a tuple type
let x: [string, number];
// Initialize it
x = ['hello', 10]; // OK
// Initialize it incorrectly
x = [10, 'hello']; // Error
x[3]='ggg'//ok,因为ok为字符串在联合类型里
枚举:是对JavaScript标准数据类型的一个补充(使用enum )
默认从0开始为元素编号
enum Color {Red, Green, Blue}
let c: Color = Color.Green;
或手动指定成员的数值
enum Color {Red = 1, Green, Blue}
let colorName: string = Color[2];
alert(colorName); // 显示'Green'因为上面代码里它的值是2
任意值:用于直接通过编译阶段的检查(使用any)
let notSure: any = 4;
notSure = "maybe a string instead";
notSure = false; // okay, definitely a boolean
或一个包含了各种类型的数组
let list: any[] = [1, true, "free"];
list[1] = 100;
空值(只能赋值null和undefined)
null、undefined
let u: undefined = undefined;
let n: null = null;
never:表示永不存在的值的类型,never类型是任何类型的子类型,可以赋值给任何类型
类型断言:也就是类型转换
使用< >
let someValue: any = "this is a string";
let strLength: number = (<string>someValue).length;//将someValue由any转为string
或使用as
let someValue: any = "this is a string";
let strLength: number = (someValue as string).length;//将someValue由any转为string
变量声明(以下let和const的用法同JavaScript一样)
let
const