diff --git a/apps/automated/src/data/observable-array-tests.ts b/apps/automated/src/data/observable-array-tests.ts index d5967f722..1ec46cf0b 100644 --- a/apps/automated/src/data/observable-array-tests.ts +++ b/apps/automated/src/data/observable-array-tests.ts @@ -16,7 +16,8 @@ export const test_ObservableArray_shouldCopySourceArrayItems = function () { export const test_ObservableArray_shouldCopyMultipleItemsAsSource = function () { // >> observable-array-arguments const sa = [1, 2, 3]; - const array = new ObservableArray(...sa); + // Avoid appending items using spread operator as it will skip argument type check + const array = new ObservableArray(1, 2, 3); // << observable-array-arguments TKUnit.assertEqual(array.length, 3, 'ObservableArray length should be 3'); diff --git a/packages/core/data/observable-array/index.ts b/packages/core/data/observable-array/index.ts index 595b0b4d0..500950a4a 100644 --- a/packages/core/data/observable-array/index.ts +++ b/packages/core/data/observable-array/index.ts @@ -50,10 +50,22 @@ export class ObservableArray extends Observable { private _addArgs: ChangedData; private _deleteArgs: ChangedData; + /** + * Create ObservableArray with specified length. + */ + constructor(arrayLength?: number); + /** * Create ObservableArray from source Array. */ - constructor(args?: T[] | number) { + constructor(items: T[]); + + /** + * Create ObservableArray from T items. + */ + constructor(...items: T[]); + + constructor(_args?: any) { super(); if (arguments.length === 1 && Array.isArray(arguments[0])) {