一:TypeScript ==> JavaScript

TypeScript 系统时间_javascript

$ tsc app.ts 

运行上面命令之后  当前文件下就会多一个app.js文件

TypeScript 系统时间_javascript_02

 

TypeScript 系统时间_Red_03

 

 

 二:基本类型

1 any

any:任意类型  声明为any的变量开源赋予任意类型的值

let obj:any = 123
let obj:any = {name:'123'}

 2 number

number:数字类型  number类型用来表示整数和分数

let binaryLiteral: number = 0b1010; // 二进制
let octalLiteral: number = 0o744;    // 八进制
let decLiteral: number = 6;    // 十进制
let hexLiteral: number = 0xf00d;    // 十六进制

 3 string

string: 字符串系列 可用单引号(' ') 或者双引号(" ") 或者模板字符串(反引号 ` `)

let blogName: string = 'superTiger' // 单引号

let knowledge: string = "study typeScript" // 双引号

let todoWhat: string = `${blogName} is studying  typeScript` // 模板字符串

 4 boolean

boolean: 逻辑值true 或者 false

let isStudy: boolean = true

let isWorking: boolean = false

 5 数组array

数组: 类似于列表的高阶对象

两种声明方式:

let arr: string[] = ['blog', 'CSDN']; // []方式
let arr1: number[] = [1, 2, 3];

let arr2: Array<number> = [1, 2, 3]; // 数组泛型方式
let arr3: Array<string> = ['1', '2', '3'];

6 元组Tuple

元组:表示已知元素数量和类型的数组,各元素的类型不必相同,对应位置的类型需要相同 

let arr:[string,number] = ['1',2] // 正确方式
let objArr: [number[],string[]] = [[1,2,3],['1','2']] // 正确


let arr:[string] = ['1',2] // 错误  元素数量不一致
let arr:[string,string] = [2,2] // 错误  元素类型不一样

 7 枚举enum

enum:用于定义数值集合

enum Color {Red,Green,Blue}

let c:Color = Color.Red

console.log(c)  // 输出0

 

TypeScript 系统时间_javascript_04

默认情况下,从0开始为元素编号。 你也可以手动的指定成员的数值。 例如:

enum Color {Red=1,Green,Blue}

let c:Color = Color.Green

console.log(c)  // 输出2

 输出:

TypeScript 系统时间_javascript_05

 通过值查找名字

enum Color {Red = 1, Green, Blue}
let colorName: string = Color[2];

console.log(colorName);  // 输出'Green'

8 void

void: 表示该方法没有返回值。

function sayhello: void {
    alert('Hello ts')
}

9 null 和 undefined

null: 表示对象缺失

undefined: 用来初始化一个未定义的值

let n: null = null

let u: undefined = undefined

TypeScript 里,undefined 和 null 两者各自有自己的类型分别叫做 undefined 和 null。 它们的本身的类型用处不是很大 ;

默认情况下 null 和 undefined 是所有类型的子类型。 就是说你可以把 null 和 undefined 赋值给 number 类型的变量。

10 any

any: 表示任意类型

 我们不希望类型检查器对这些值进行检查而是直接让它们通过编译阶段的检查。 那么我们可以使用 any 类型来标记这些变量

let test: any = 22

test = {name:'superTiger'}
test = false

12 object

object:非原始类型

 除numberstringbooleansymbolnullundefined之外的类型都可以用object来表示

function fn(obj: object): object {
  console.log('obj:', obj);
  return {};
}

console.log(fn(new String('superTiger')));

TypeScript 系统时间_TypeScript 系统时间_06

 13 never

never:表示的是那些永不存在的值的类型

// 返回never的函数必须存在无法达到的终点
function error(message: string): never {
    throw new Error(message);
}

// 返回never的函数必须存在无法达到的终点
function infiniteLoop(): never {
    while (true) {
    }
}

14 联合类型  Union Types

Union Types:取值可以为多种类型中的一种  声明时用 |  隔开

let test: string | number = 123;
test = 'superTiger';

console.log(test);
test = 666;
console.log(test);

TypeScript 系统时间_Red_07

 访问联合类型的属性或方法:

只能访问联合类型中所有类型共有的属性或者方法

// 报错   Property 'length' does not exist on type 'number'
// number类型是没有'length'属性的

function getLength(something: string | number): number {
    return something.length;
} 



// 正确  string类型和number类型都有toString()方法

function getString(something: string | number): string {
    return something.toString();
}