mirror of
https://github.com/zhigang1992/DefinitelyTyped.git
synced 2026-04-23 12:56:46 +08:00
Merge pull request #23478 from ffMathy/patch-2
fix for knockout mapping bug reported in #23015
This commit is contained in:
7
types/knockout.mapping/index.d.ts
vendored
7
types/knockout.mapping/index.d.ts
vendored
@@ -13,6 +13,10 @@ declare var self: KnockoutMapping;
|
||||
export = self;
|
||||
|
||||
declare global {
|
||||
type KnockoutObservableType<T> = {
|
||||
[P in keyof T]: KnockoutObservable<KnockoutObservableType<T[P]>>|T[P];
|
||||
};
|
||||
|
||||
interface KnockoutMappingCreateOptions {
|
||||
data: any;
|
||||
parent: any;
|
||||
@@ -48,7 +52,8 @@ declare global {
|
||||
fromJSON(jsonString: string, targetOrOptions: any): any;
|
||||
fromJSON(jsonString: string, inputOptions: any, target: any): any;
|
||||
toJS<T>(viewModel: KnockoutObservableArray<T>|KnockoutObservableType<T>[]|KnockoutObservableArray<KnockoutObservableType<T>>|T[], options?: KnockoutMappingOptions): T[];
|
||||
toJS<T>(viewModel: KnockoutObservable<T>|KnockoutObservableType<T>|KnockoutObservable<KnockoutObservableType<T>>|T, options?: KnockoutMappingOptions): T;
|
||||
toJS<T>(viewModel: KnockoutObservable<T>|KnockoutObservableType<T>|KnockoutObservable<KnockoutObservableType<T>>, options?: KnockoutMappingOptions): T;
|
||||
toJS<T>(viewModel: T, options?: KnockoutMappingOptions): T;
|
||||
toJSON(rootObject: any, options?: KnockoutMappingOptions): string;
|
||||
defaultOptions(): KnockoutMappingOptions;
|
||||
resetDefaultOptions(): void;
|
||||
|
||||
22
types/knockout/index.d.ts
vendored
22
types/knockout/index.d.ts
vendored
@@ -410,10 +410,6 @@ interface KnockoutTasks {
|
||||
}
|
||||
|
||||
/////////////////////////////////
|
||||
type KnockoutObservableType<T> = {
|
||||
[P in keyof T]: KnockoutObservable<T[P]>;
|
||||
};
|
||||
|
||||
interface KnockoutStatic {
|
||||
utils: KnockoutUtils;
|
||||
memoization: KnockoutMemoization;
|
||||
@@ -444,12 +440,18 @@ interface KnockoutStatic {
|
||||
contextFor(node: any): any;
|
||||
isSubscribable(instance: any): instance is KnockoutSubscribable<any>;
|
||||
toJSON(viewModel: any, replacer?: Function, space?: any): string;
|
||||
toJS<T>(viewModel: KnockoutObservableArray<T>|KnockoutObservableType<T>[]|KnockoutObservableArray<KnockoutObservableType<T>>|T[]): T[];
|
||||
toJS<T>(viewModel: KnockoutObservable<T>|KnockoutObservableType<T>|KnockoutObservable<KnockoutObservableType<T>>): T;
|
||||
toJS<T>(viewModel: T): T;
|
||||
isObservable<T>(instance: KnockoutObservable<T>|T): instance is KnockoutObservable<T>;
|
||||
isWriteableObservable<T>(instance: KnockoutObservable<T>|T): instance is KnockoutObservable<T>;
|
||||
isComputed<T>(instance: KnockoutObservable<T>|T): instance is KnockoutComputed<T>;
|
||||
|
||||
toJS(viewModel: any): any;
|
||||
|
||||
isObservable(instance: any): instance is KnockoutObservable<any>;
|
||||
isObservable<T>(instance: KnockoutObservable<T>): instance is KnockoutObservable<T>;
|
||||
|
||||
isWriteableObservable(instance: any): instance is KnockoutObservable<any>;
|
||||
isWriteableObservable<T>(instance: KnockoutObservable<T>): instance is KnockoutObservable<T>;
|
||||
|
||||
isComputed(instance: any): instance is KnockoutComputed<any>;
|
||||
isComputed<T>(instance: KnockoutObservable<T> | T): instance is KnockoutComputed<T>;
|
||||
|
||||
dataFor(node: any): any;
|
||||
removeNode(node: Node): void;
|
||||
cleanNode(node: Node): Node;
|
||||
|
||||
@@ -96,6 +96,19 @@ class GetterViewModel {
|
||||
public range: KnockoutObservable<any>;
|
||||
}
|
||||
|
||||
function testToJs() {
|
||||
var objKo = {
|
||||
prop: ko.observable("prop"),
|
||||
subKo: ko.observable({
|
||||
prop: ko.observable("prop")
|
||||
})
|
||||
};
|
||||
|
||||
var objJs = ko.toJS(objKo);
|
||||
objJs.prop; // $ExpectType any
|
||||
objJs.subKo.prop; // $ExpectType any
|
||||
}
|
||||
|
||||
function testGetter() {
|
||||
var model = new GetterViewModel();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user