From 0c694b22fbb3d325df1106f455bd283e5b0b2b8b Mon Sep 17 00:00:00 2001 From: Mike North Date: Fri, 14 Sep 2018 09:56:14 -0700 Subject: [PATCH] [ember] refactor @ember/polyfills types into their own package (#28797) * [ember] refactor @ember/polyfills into its own module fixes https://github.com/typed-ember/ember-cli-typescript/issues/273 * [ember] delay activation of some tests until after future improvements to Ember.assign/merge --- .../ember__polyfills-tests.ts | 25 +++++++++++++++++ types/ember__polyfills/index.d.ts | 10 +++++++ types/ember__polyfills/tsconfig.json | 28 +++++++++++++++++++ types/ember__polyfills/tslint.json | 4 +++ 4 files changed, 67 insertions(+) create mode 100644 types/ember__polyfills/ember__polyfills-tests.ts create mode 100644 types/ember__polyfills/index.d.ts create mode 100644 types/ember__polyfills/tsconfig.json create mode 100644 types/ember__polyfills/tslint.json diff --git a/types/ember__polyfills/ember__polyfills-tests.ts b/types/ember__polyfills/ember__polyfills-tests.ts new file mode 100644 index 0000000000..044ed0413c --- /dev/null +++ b/types/ember__polyfills/ember__polyfills-tests.ts @@ -0,0 +1,25 @@ +import { assign, merge } from '@ember/polyfills'; + +(() => { /* assign */ + assign({}, { a: 'b'}); + assign({}, { a: 'b'}).a; // $ExpectType string + assign({ a: 6 }, { a: 'b'}).a; // $ExpectType string + assign({ a: 6 }, {}).a; // $ExpectType number + assign({ b: 6 }, {}).a; // $ExpectError + // TODO enable after https://github.com/typed-ember/ember-cli-typescript/issues/291 + // assign({}, { b: 6 }, {}).b; // $ExpectType number + assign({ a: 'hello' }, { b: 6 }, {}).a; // $ExpectType string + // TODO enable after https://github.com/typed-ember/ember-cli-typescript/issues/291 + // assign({ a: 'hello' }, { b: 6 }, { a: true }).a; // $ExpectType boolean + // TODO enable after https://github.com/typed-ember/ember-cli-typescript/issues/291 + // assign({ a: 'hello' }, '', { a: true }).a; // $ExpectError + assign({ d: ['gobias industries'] }, { a: 'hello' }, { b: 6 }, { a: true }).d; // $ExpectType string[] +})(); + +(() => { /* merge */ + merge({}, { a: 'b'}); + merge({}, { a: 'b'}).a; // $ExpectType string + merge({ a: 6 }, { a: 'b'}).a; // $ExpectType string + merge({ a: 6 }, {}).a; // $ExpectType number + merge({ b: 6 }, {}).a; // $ExpectError +})(); diff --git a/types/ember__polyfills/index.d.ts b/types/ember__polyfills/index.d.ts new file mode 100644 index 0000000000..2a3c9b4a93 --- /dev/null +++ b/types/ember__polyfills/index.d.ts @@ -0,0 +1,10 @@ +// Type definitions for @ember/polyfills 3.0 +// Project: http://emberjs.com/ +// Definitions by: Mike North +// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped +// TypeScript Version: 2.8 + +import Ember from 'ember'; + +export const assign: typeof Ember.assign; +export const merge: typeof Ember.merge; diff --git a/types/ember__polyfills/tsconfig.json b/types/ember__polyfills/tsconfig.json new file mode 100644 index 0000000000..a2a6bd371b --- /dev/null +++ b/types/ember__polyfills/tsconfig.json @@ -0,0 +1,28 @@ +{ + "compilerOptions": { + "module": "commonjs", + "target": "es5", + "lib": [ + "es6", + "dom" + ], + "noImplicitAny": true, + "noImplicitThis": true, + "strictNullChecks": true, + "strictFunctionTypes": true, + "baseUrl": "../", + "typeRoots": [ + "../" + ], + "paths": { + "@ember/polyfills": ["ember__polyfills"] + }, + "types": [], + "noEmit": true, + "forceConsistentCasingInFileNames": true + }, + "files": [ + "index.d.ts", + "ember__polyfills-tests.ts" + ] +} diff --git a/types/ember__polyfills/tslint.json b/types/ember__polyfills/tslint.json new file mode 100644 index 0000000000..10d875b8db --- /dev/null +++ b/types/ember__polyfills/tslint.json @@ -0,0 +1,4 @@ +{ + "extends": "dtslint/dt.json", + "rules": {} +}