本文整理自网络,侵删。
TypeScript声明文件规范
普通类型
Number
,String
,Boolean
和Object
不要使用如下类型Number
,String
,Boolean
或Object
。 这些类型指的是非原始的装盒对象,它们几乎没在JavaScript代码里正确地使用过。
/* 错误 */
function reverse(s: String): String;
应该使用类型number
,string
,and boolean
。
/* OK */
function reverse(s: string): string;
如果你就要使用Object
类型,考虑使用any
代替。 目前在TypeScript里无法指定一个对象“不是一个原始值”。
泛型
不要定义一个从来没使用过其类型参数的泛型类型。 了解详情 TypeScript FAQ page。
回调函数类型
回调函数返回值类型
不要为返回值被忽略的回调函数设置一个any
类型的返回值类型:
/* 错误 */
function fn(x: () => any) {
x();
}
应该给返回值被忽略的回调函数设置void
类型的返回值类型:
/* OK */
function fn(x: () => void) {
x();
}
为什么:使用void
相对安全,因为它防止了你不小心使用x
的返回值:
function fn(x: () => void) {
var k = x(); // oops! meant to do something else
k.doSomething(); // error, but would be OK if the return type had been 'any'
}
回调函数里的可选参数
不要在回调函数里使用可选参数除非你真的要这么做:
/* 错误 */
interface Fetcher {
getObject(done: (data: any, elapsedTime?: number) => void): void;
}
这里有一种特殊的意义:done
回调函数可能以1个参数或2个参数调用。 代码大概的意思是说这个回调函数不在乎是否有 elapsedTime
参数, 但是不需要把这个参数当成可选参数来达到此目的 -- 因为总是允许提供一个接收较少参数的回调函数。
相关阅读 >>
简单对比,看看typescript中interface和type间的区别
更多相关阅读请进入《typescript》频道 >>

Vue.js 设计与实现 基于Vue.js 3 深入解析Vue.js 设计细节
本书对 Vue.js 3 技术细节的分析非常可靠,对于需要深入理解 Vue.js 3 的用户会有很大的帮助。——尤雨溪,Vue.js作者