0

現在、JavaScriptの一部をtypescriptに変換中です。たとえば、次のように、私たちが管理している別のjavascriptライブラリに引き出した既存の機能がいくつかあります。

Framework.utils = {
    utilFnOne: function ()...,
    utilFnTwo: function ()...,
    utilFnThree: function ()...,
}

また、次のような非フレームワークコードで使用するユーティリティもいくつかあります。

Current.utils = Framework.utils;  // Extend the framework's utils
Current.utils.utilFnFour = function()...;
Current.utils.utilFnFive = function()...;

Typescript

フレームワークライブラリの定義は次のように作成できます。

declare module Framework.utils {
    export function utilFnOne();
    export function utilFnTwo();
    export function utilFnThree();
}

そして、次のようなことを行うことで、Current.utilsのタイプスクリプト定義を作成できます。

module Current.utils {
     export function utilFnFour() {}
     export function utilFnFive() {}
     export class StringUtils { }
}

このようなことができたらいいのにと思います。

module Current.utils extends Framework.utils { .... }

そのため、インテリセンスは、フレームワークと現在の両方のメンバーを表示します。

Current.utils.  

編集-解決

私はライアンが持っていた考えを取り入れて、それを少し修正しました

Framework.d.ts

declare module Framework {
    export var util: _utilImpl;
    export class _utilImpl {
        utilFnOne(a: string) : string;
    }
}

Current.ts

module Current {
    export var util = new _utilImpl();
    export class _utilImpl extends Framework._utilImpl {
        utilFnTwo(b: number) : number;
    }
}
4

1 に答える 1

1

interface代わりにを使用してこれを少しリファクタリングしてmodule、目的の動作を得ることができます。

interface FrameworkUtils {
    utilFnOne(s: string);
    utilFnTwo(s: string);
}

declare module Framework {
    export var utils: FrameworkUtils;   
}

Framework.utils.utilFnOne('');

/// ... later

interface CurrentUtils extends FrameworkUtils {
    utilFnFour();
}

declare module Current {
    export var utils: CurrentUtils; 
}

Current.utils.utilFnOne('');
Current.utils.utilFnFour();
于 2012-12-12T17:43:55.857 に答える