【问题标题】:Typescript error TS2339: Property '__super__' does not exist on type '($element: any, options: any) => any'打字稿错误 TS2339:属性 '__super__' 在类型 '($element: any, options: any) => any' 上不存在
【发布时间】:2018-08-02 10:07:45
【问题描述】:

我在打字稿中有 Javascript 代码

$.fn.select2.amd.require([
    'select2/data/array',
    'select2/utils'
    ], function (ArrayData, Utils) {
      /* tslint:disable */
        function CustomData ($element, options) :any {
            CustomData.__super__.constructor.call(this, $element, options);
        }
      /* tslint:enable */
        Utils.Extend(CustomData, ArrayData);

        CustomData.prototype.query = function (params, callback) {
          var result =  ymaps.suggest(params.term).then(function (items) {
          var data = [];
          var output = {
            results : [],
            more : false
          };
            for (var index = 0; index < items.length; ++index) {
                data.push({
                  id: String(items[index]['displayName']),
                  text: items[index]['displayName'],
                })
            }
            output.results = data;
            callback(output);
          });                
        };

        $("#basic").select2({
            width:"100%",
            closeOnSelect:false,
            dataAdapter: CustomData
        });
        $('#basic').on('select2:select', function (e) {
          console.log(e);
          $('span.select2-search.select2-search--dropdown > input').val($("#basic").val());
        });
    });

当我尝试 ng build 时,它说

src/app/car/car-create/car.component.ts(43,28) 中的错误:错误 TS2339:属性 '__super__' 不存在于类型 '($element: any, options:任何)=> 任何'。

如何解决这个问题。 我试图声明 var CustomData: any;和 /* tslint:disable */ 在类导出行之前

【问题讨论】:

    标签: angular typescript


    【解决方案1】:

    您是否尝试过将 CustomData 对象强制转换为任何对象?

    (<any>CustomData).__super__.someprop...
    

    或者你也可以给CustomData一个函数接口(没试过)

    这里是函数接口的附加示例:

    interface CustomDataFN {
        (this: any, $element: any, options: any): any;
        __super__: any;
    }
    
    var CustomData: CustomDataFN = <CustomDataFN>function ($element, options): any {
        CustomData.__super__.constructor.call(this, $element, options);
    }
    
    CustomData.prototype....
    

    当然,您可以使用我刚刚放入any 的自定义属性和类型来声明接口,以防止编译错误。

    【讨论】:

      猜你喜欢
      • 2021-09-10
      • 2021-06-21
      • 1970-01-01
      • 2018-10-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-03
      • 2022-12-17
      相关资源
      最近更新 更多