Я пытаюсь написать определение типа для пользовательской спецификации модуля, которую я унаследовал здесь. Не могу понять это. Хитрость в том, что контекст 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»