typescript api

一 基础类型(有null和undefinded吗)
1、布尔值:同js

let isDone: boolean = false;

2、数字:所有数字都是浮点数,支持二进制,八进制,十进制,十六进制

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

3、字符串:支持模版字符串

let name: string = "bob";

4、数组:

let list: number[] = [1, 2, 3];
let list: Array<number> = [1, 2, 3]; // 数组范型

5、元组(Tuple):元组类型允许表示一个已知元素数量和类型的数组,各元素的类型不必相同

let x: [string, number];

当访问一个越界的元素,会使用联合类型替代
6、枚举类型(enum):

enum Color {Red=0, Green=1, Blue=2}
let c: Color = Color.Green;
c = Color[1]; // Green

7、Any:任意类型
8、void:没有任何类型

function warnUser(): void { // 没有返回值
    console.log("This is my warning message");
}
let unusable: void = undefined|null;

9、Null和Undefined
当你指定了--strictNullChecks标记,null和undefined只能赋值给void和它们各自。
10、Never:无法到达的重点,不存在的类型

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

// 推断的返回值类型为never
function fail() {
    return error("Something failed");
}

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

11、Object:非原始类型,也就是除number,string,boolean,symbol,null或undefined之外的类型。
12、类型断言:

let someValue: any = "this is a string";

let strLength: number = (<string>someValue).length; // 我知道someValue一定是string,所以不用检查类型了,直接掉用length属性吧;
let strLength: number = (someValue as string).length; // 同上,jsx语法支持

二 变量声明 es6的内容
三 接口
1、概念及示例:

interface LabelledValue { // LabelledValue是接口的名字,这个接口定义了一个约束,它代表了有一个 label属性且类型为string的对象
  label: string;
}

function printLabel(labelledObj: LabelledValue) {
  console.log(labelledObj.label);
}

let myObj = {size: 10, label: "Size 10 Object"};
printLabel(myObj);

2、可选属性:

interface SquareConfig {
  color?: string;
  width?: number;
}

3、只读属性:只能在刚创建的时候赋值

interface Point {
    readonly x: number;
    readonly y: number;
}
/* TypeScript具有ReadonlyArray<T>类型,它与Array<T>相似,只是把所有可变方法去掉了,因此可以确保数组创建后再也不能被修改:*/
let a: number[] = [1, 2, 3, 4];
let ro: ReadonlyArray<number> = a;
ro[0] = 12; // error!
ro.push(5); // error!
ro.length = 100; // error!
a = ro; // error!
/* 上面代码的最后一行,可以看到就算把整个ReadonlyArray赋值到一个普通数组也是不可以的。 但是你可以用类型断言重写: */
a = ro as number[];

readonly vs const
最简单判断该用readonly还是const的方法是看要把它做为变量使用还是做为一个属性。 做为变量使用的话用 const,若做为属性则使用readonly。
4、额外的属性检查
如果你的参数中含有约束中没有的字段,他会提示你这个字段有可能是错误的,你可以通过一下两种方式来避免这种错误提示

1、interface SquareConfig {
    color?: string;
    width?: number;
    [propName: string]: any; // 任意的其他字段
}
2、let squareOptions = { colour: "red", width: 100 };
let mySquare = createSquare(squareOptions); // 不使用对象字面量可以绕开这种检查

5、函数类型接口,只有参数列表和返回值类型的定义,没有实现

interface SearchFunc {
  (source: string, subString: string): boolean;
}

let mySearch: SearchFunc;
mySearch = function(src: string, sub: string): boolean {
  let result = src.search(sub);
  return result > -1;
}

对于函数类型的类型检查来说,函数的参数名不需要与接口里定义的名字相匹配,只要对应位置桑的参数类型是兼容的
6、可索引的类型
7、类类型
8、

四 类
n、抽像类:在类的声明前加上abstract前缀,里面可以包含抽象方法也可以包含实例方法,但抽象方法前面必须加上关键字。

abstract class Department {

    constructor(public name: string) {
    }

    printName(): void {
        console.log('Department name: ' + this.name);
    }

    abstract printMeeting(): void; // 必须在派生类中实现
}

注意:在继承抽象类的时候,如果声明一个变量类型是抽象类型,但是示例化是派生类型,则这个对象不可调用派生类自己的方法。
2、把类当做接口使用
类可以定义类型,所以在js里接口也可以继承类

class Point {
    x: number;
    y: number;
}

interface Point3d extends Point {
    z: number;
}

五、函数

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,732评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,496评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,264评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,807评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,806评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,675评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,029评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,683评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,704评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,666评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,773评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,413评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,016评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,978评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,204评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,083评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,503评论 2 343

推荐阅读更多精彩内容