「这是我参与11月更文挑战的第3天,活动详情查看:2021最后一次更文挑战」。
More on Functions
上节回顾--从0开始TS-02 基本语法
更多关于Functions的资料
Function Type Expressions(函数类型表达式)
为方法参数定义类型为函数类型
我们也可以使用别名定义函数类型
Call Signatures (调用签名)
js中的函数除了可以调用之外,还可以具有属性。调用签名方案就是为此设计。
调用签名与函数类型不太一样,由 => 换成了 :
Construct Signatures (构造签名)
如果你要标记构造函数的类型,可以使用构造签名来创建。
Generic Functions 通用函数
通常我们需要编写一个输入类型与输出类型相关的一个函数,
在ts中,泛型用于描述两个值之间的对应关系。我们通过在函数签名中声明一个类型参数来实现:
我们可以在使用的时候直接调用,代码如下
const s = firstElement([1,2,3]);
// 此处类型出现了
我们也可以使用,多个类型参数,代码如下
Constraints (约束)
我们上面编写的通用函数可以处理任何类型的值,但有时候我们希望关联两个值,但是只能对某个值的子集进行操作。在这种情况下,我们可以使用约束来限制类型参数可以接受的类型种类。
处理约束需要传入符合约定的方法,否则会出现如下错误
Specifying Type Arguments(指定类型参数)
Guidelines for Writing Good Generic Functions(编写良好的通用型指南)
- Push Type Parameters Down(下推类型参数)
如果可能的话,使用类型参数本身而不是约束它
- Use Fewer Type Paramenters (使用更少的类型参数)
总是尽可能少的使用类型参数
- Type Parameters Should Appear Twice(类型参数应该出现两次)
如果一个类型参数只出现在一个位置,请强烈重新考虑实际是否需要他
Optional Paramenters 可选参数
ts中的所有可选参数都可以使用?的方式标记
Function Overloads(函数重载)
可以同时实现一个具有兼容签名的函数实现
Overload Signatures and the Implementation Signature(重载签名和实现签名)
重载签名即定义的签名,实现签名即上面方法第三行实现的签名,实现签名必须与重载签名兼容。
Writing Good OverLoads(写好的重载)
与泛型一样,在使用重载的时候也应该遵循一些准则。遵守这些原则将使您的函数更容易调用、更容易理解和更容易实现。
- 如果可能的话,总是倾向于使用联合类型的参数,而不是重载。
Other Types to Know About(其他需要了解的类型)
void
- Void is not the same as undefined
object
- object is not Object. Always use object!
unknow
- 未知类型表示任何值。这和任何类型都类似,但是更安全,因为使用未知值是不合法的。
never
- 有些函数从不返回值
Function
- 全局function 描述了类似bind、call、apply等属性,这些属性出现在Javascript的所有函数值上。他还有一个特殊属性,即Function 类型的值总是可以被调用。
Rest Paramenters and Arguments rest(形参和实参)
Assignability of Functions(函数的可转让性)
Return Type void
返回值为void会返回一些不寻常但是预期的行为,带有void的返回类型可以让返回任何类型的上下文报错。
下节--从0开始TS-04 对象类型
--- END ---