diff --git a/types/deep-freeze/deep-freeze-tests.ts b/types/deep-freeze/deep-freeze-tests.ts index b8a6061859..d021944ff4 100644 --- a/types/deep-freeze/deep-freeze-tests.ts +++ b/types/deep-freeze/deep-freeze-tests.ts @@ -5,3 +5,6 @@ class Foo { } const foo = df(new Foo()); const items = df([{id: 0, name: 'first'}]); +const functionTest = df({id: 0, name: 'first', update: (blah: boolean) => blah}); + +functionTest.update(true); diff --git a/types/deep-freeze/index.d.ts b/types/deep-freeze/index.d.ts index 16e183d185..ca8ceeca53 100644 --- a/types/deep-freeze/index.d.ts +++ b/types/deep-freeze/index.d.ts @@ -2,7 +2,7 @@ // Project: https://github.com/substack/deep-freeze // Definitions by: Bart van der Schoor , Aluan Haddad // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped -// TypeScript Version: 2.1 +// TypeScript Version: 3.1 export = deepFreeze; @@ -11,7 +11,8 @@ declare function deepFreeze(f: T): T; declare function deepFreeze(o: T): deepFreeze.DeepReadonly; declare namespace deepFreeze { - type DeepReadonly = { - readonly [P in keyof T]: DeepReadonly - }; + type DeepReadonly = + T extends (...args: any) => any + ? T + : { readonly [P in keyof T]: DeepReadonly }; }