打字稿中的工厂函数语法

时间:2016-02-14 17:16:27

标签: javascript typescript

我不明白c类型标记语法: https://visualstudiomagazine.com/blogs/tool-tracker/2015/12/factory-functions-typescript.aspx

function CreateCustomer<c extends ICustomer>(cust:{new(): c;}, 
                                         name: string, age: number): c

有人可以在3个不同的地方解释上面的c是什么吗?

2 个答案:

答案 0 :(得分:2)

第一个c声明集合变量必须扩展ICustomer(在app中你可以拥有VIPC​​ustomer,MegaCustomer ......)

然后第二个c是c的构造函数100%扩展ICustomer(将此对象返回到cust)的安全措施

最后一个c是整个函数的返回类型。

度过美好的一天!

答案 1 :(得分:1)

  1. <c extends ICustomer>表示“c是一种扩展ICustomer
  2. 的类型
  3. cust:{new(): c;}表示“cust是一个可以使用new cust()调用的函数,它将返回c类型的对象”
  4. function CreateCustomer/*...*/(/*...*/): c表示“函数CreateCustomer返回c类型的对象”
  5. 可以这样调用该函数:
    var john:Customer = CreateCustomer(Customer, "John", 35)
    其中Customer是扩展ICustomer接口的类。