diff --git a/package.json b/package.json index 010223c2146..de00f13d5d4 100644 --- a/package.json +++ b/package.json @@ -40,7 +40,7 @@ "lint-js": "eslint samples/**/*.html samples/**/*.js src/**/*.js test/**/*.js", "lint-md": "markdownlint-cli2 \"**/*.md\" \"#**/node_modules\"", "lint-tsc": "tsc", - "lint-types": "eslint types/**/*.d.ts", + "lint-types": "eslint types/**/*.d.ts && tsc -p types/tests/", "lint": "concurrently \"npm:lint-*\"", "test": "npm run lint && cross-env NODE_ENV=test karma start --auto-watch --single-run --coverage --grep", "typedoc": "npx typedoc" diff --git a/types/index.esm.d.ts b/types/index.esm.d.ts index 46c14653415..5a7da61e662 100644 --- a/types/index.esm.d.ts +++ b/types/index.esm.d.ts @@ -1489,7 +1489,7 @@ export type AnimationSpec = { } export type AnimationsSpec = { - [name: string]: AnimationSpec & { + [name: string]: false | AnimationSpec & { properties: string[]; /** @@ -1507,7 +1507,7 @@ export type AnimationsSpec = { * */ to: Scriptable; - } | false + } } export type TransitionSpec = { @@ -1520,7 +1520,7 @@ export type TransitionsSpec = { } export type AnimationOptions = { - animation: AnimationSpec & { + animation: false | AnimationSpec & { /** * Callback called on each step of an animation. */ diff --git a/types/tests/animation.ts b/types/tests/animation.ts new file mode 100644 index 00000000000..33fea278bdc --- /dev/null +++ b/types/tests/animation.ts @@ -0,0 +1,42 @@ +import { Chart } from '../index.esm'; + +const chart = new Chart('id', { + type: 'bar', + data: { + labels: [], + datasets: [{ + data: [] + }] + }, + options: { + animation: false, + animations: { + colors: false, + numbers: { + properties: ['a', 'b'], + type: 'number', + from: 0, + to: 10, + delay: (ctx) => ctx.dataIndex * 100, + duration: (ctx) => ctx.datasetIndex * 1000, + loop: true, + easing: 'linear' + } + }, + transitions: { + show: { + animation: { + duration: 10 + }, + animations: { + numbers: false + } + }, + custom: { + animation: { + duration: 10 + } + } + } + }, +}); diff --git a/types/tests/tsconfig.json b/types/tests/tsconfig.json new file mode 100644 index 00000000000..774512d1992 --- /dev/null +++ b/types/tests/tsconfig.json @@ -0,0 +1,12 @@ +{ + "compilerOptions": { + "target": "ES6", + "moduleResolution": "Node", + "alwaysStrict": true, + "noEmit": true + }, + "include": [ + "*.ts", + "../index.esm.d.ts" + ] +}