Определение типа TypeScript для пользовательского шаблона модуля - PullRequest
0 голосов
/ 01 мая 2018

Я пытаюсь написать определение типа для пользовательской спецификации модуля, которую я унаследовал здесь. Не могу понять это. Хитрость в том, что контекст this в вычисляемом контексте в функциях должен управляться из свойств , так что shouldBeValueA управляется из KEYA .

define.model("moduleName",
[
    "jquery"
],
function($) {
    return this.viewModel({
        pub: {
            properties: {
                keyA: "valueA"
            },
            functions: {
                keyB: this.computed(function() {
                    var shouldBeValueA = this.keyA;
                })
            }
        }
    })
})

Лучшее определение, которое я получил до сих пор:

interface Define {
model: (
    name: string,
    dependencies: string[],
    moduleContext: <T>(this: {
        computed: (context: (this: T) => any) => KnockoutComputed<any>,
        viewModel: (options: {
            pub: {
                properties: T,
                functions: any
            },
        }) => any;
    },
    ...args) => void) => void;
}

declare var define: Define;

Но это ошибки: «Свойство keyA не существует для типа T»

...