什么是TypeScript
TypeScript is a typed superset of JavaScript that compiles to plain JavaScript. Any browser. Any host. Any OS. Open source.
javascript的超集,能够编译成javascript,任何浏览器和任何系统都可以运行,是开源的
基础类型
typescript提供了一些基础类型,在定义变量时,对变量进行类型限定,直观且能易于编码阶段查错
- 布尔值
let isTrue: boolean =true
let isTrue: Boolean =true
- 数值
let numbe:number =6
- 字符串
let str:string ='hello world'
- 空值
//可以用 void 表示没有任何返回值的函数
function alertName(): void {
alert('My name is xcatliu');
}
//声明一个 void 类型只能将它赋值为 undefined 和 null
let unusable: void = undefined;
or
let unusable: void = null;
5.null和undefined
默认情况下null和undefined是所有类型的子类型
//然而,当你指定了--strictNullChecks标记
//null和undefined只能赋值给void和它们自己
//也许在某处你想传入一个 string或null或undefined
// Compiled with --strictNullChecks
let x: number;
let y: number | null;
let z: number | undefined;
x; // Error, reference not preceded by assignment
y; // Error, reference not preceded by assignment
z; // Ok
x = 1;
y = null;
x; // Ok
y; // Ok
6.any
我们不希望类型检查器对这些值进行检查而是直接让它们通过编译阶段的检查
let notSure: any = 4;
notSure = "maybe a string instead";
7.Never
never类型表示的是那些永不存在的值的类型
never类型是任何类型的子类型,也可以赋值给任何类型;然而,没有类型是never的子类型或可以赋值给never类型(除了never本身之外)
// 返回never的函数必须存在无法达到的终点
function error(message: string): never {
throw new Error(message);
}
// 推断的返回值类型为never
function fail():never {
return error("Something failed");
}
// 返回never的函数必须存在无法达到的终点
function infiniteLoop(): never {
while (true) {
}
}
8.数组
//方式一:在元素类型后接上[]
let arr:num[]=[1,2,3]
//方式二:
let arr:Array=[1,2,3]
9.元组
表示已知数量和已知类型的数组
let x: [string, number];
// Initialize it
10.枚举
使用枚举类型可以为一组数值赋予自己定义的名字。
默认从0开始赋值,可以手动赋值
enum Color {Red = 1, Green, Blue}
let c: Color = Color.Green;
应用,通过值引用名字
enum Color {Red = 1, Green, Blue}
let colorName: string = Color[2];
alert(colorName);//Green
11.类型断言
对于某些类型加更多约束
//方式一
let someValue: any = "this is a string";
let strLength: number = (someValue).length;
//方式二 :as语法
let someValue: any = "this is a string";
let strLength: number = (someValue as string).length;
当你在TypeScript里使用JSX时,只有方式二 as语法断言是被允许的。
变量声明
- let
局部定义,在代码块内有效 - const
- var
局部定义,在函数作用于有效。只看定义的位置, var声明的变量可以在包含它们的函数外访问
function f() {
var a = 10;
return function g() {
var b = a + 1;
return b;
}
}
var g = f();
g(); // returns 11;