TypeScript杂记

any

当我们不希望类型检查器在编辑阶段检查的时候,就可以使用any

1
2
3
let notSure: any = 4;
notSure = "maybe a string instead";
notSure = false; // okay, definitely a boolean

any的用法和Object很像,但是Object类型的变量只是允许你任意赋值,但是不能调用任意方法

1
2
3
4
5
6
let notSure: any = 4;
notSure.ifItExists(); // okay, ifItExists might exist at runtime
notSure.toFixed(); // okay, toFixed exists (but the compiler doesn't check)

let prettySure: Object = 4;
prettySure.toFixed(); // Error: Property 'toFixed' doesn't exist on type 'Object'.

立即执行函数(IIFE)

1
(function(){ /* code */ }());

还有好多其他写法:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
// 最常用的两种写法
(function(){ /* code */ }()); // 老道推荐写法
(function(){ /* code */ })(); // 当然这种也可以

// 括号和JS的一些操作符(如 = && || ,等)可以在函数表达式和函数声明上消除歧义
// 如下代码中,解析器已经知道一个是表达式了,于是也会把另一个默认为表达式
// 但是两者交换则会报错
var i = function(){ return 10; }();
true && function(){ /* code */ }();
0, function(){ /* code */ }();

// 如果你不怕代码晦涩难读,也可以选择一元运算符
!function(){ /* code */ }();
~function(){ /* code */ }();
-function(){ /* code */ }();
+function(){ /* code */ }();

// 你也可以这样
new function(){ /* code */ }
new function(){ /* code */ }() // 带参数

接口

接口初探

1
2
3
4
5
6
function printLabel(labelledObj: { label: string }) {
console.log(labelledObj.label);
}

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

export

default export

Default Export (export default)

1
2
// MyClass.ts -- using default export
export default class MyClass { /* ... */ }

最主要的区别:你只能有一个默认的导出再每一个文件,然后导入的时候形式如下:

1
import MyClass from "./MyClass";

或者你可以给他起个别名

1
import MyClassAlias from "./MyClass";

export

使用方法如下:

1
2
3
// MyClass.ts -- using named exports
export class MyClass { /* ... */ }
export class MyOtherClass { /* ... */ }

当使用这种方式的时候,你可以在一个文件中有多个导出,并且你需要用大括号导入

1
import {MyClass} from "./MyClass";

想起个别名也是可以的

1
2
import {MyClass, MyOtherClass as MyOtherClassAlias} from "./MyClass";
// use MyClass and MyOtherClassAlias

如果很多的话,一口气全导入即可,方法如下

1
2
import * as MyClasses from "./MyClass";
// use MyClasses.MyClass and MyClasses.MyOtherClass here

参考文档:微软官方教程