【问题标题】:Type definition file类型定义文件
【发布时间】:2018-08-10 17:51:42
【问题描述】:

是否可以为下一个函数编写类型定义?

define('ComponentName', ['_', 'jQuery'], function(_, $) {
   ...
});

问题是函数内部无法识别参数“_”(lodash)和“jQuery”。

此外,可以使用可变数量的参数调用函数,例如仅使用 jQuery:

define('ComponentName', ['jQuery'], function($) {
   ...
});

谢谢。

【问题讨论】:

    标签: javascript typescript .d.ts


    【解决方案1】:

    类似这样的:

    interface ComponentTypes {
        // Replace with actual types. 
        MyComponent: unknown;
        _: unknown;
        jQuery: unknown;
    }
    
    function define<D extends keyof ComponentTypes,
        A1 extends keyof ComponentTypes>
        (d: D, deps: [A1], f: (a1: ComponentTypes[A1]) => void);
    function define<D extends keyof ComponentTypes,
        A1 extends keyof ComponentTypes, A2 extends keyof ComponentTypes>
        // TODO: Where does ComponentTypes[D] enter into this?
        (d: D, deps: [A1, A2], f: (a1: ComponentTypes[A1], a2: ComponentTypes[A2]) => void);
    function define(d: string, deps: string[], f: Function) {
        // ...
    }
    
    define("MyComponent", ["_", "jQuery"], function (_, $) {
        // ...
    });
    define("MyComponent", ["jQuery"], function ($) {
        // ...
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-09-21
      • 1970-01-01
      • 1970-01-01
      • 2020-08-29
      • 2021-08-04
      • 2010-09-30
      • 2014-03-28
      相关资源
      最近更新 更多