diff --git a/package.json b/package.json
index cee2108..8464080 100644
--- a/package.json
+++ b/package.json
@@ -62,6 +62,11 @@
"types": "./dist/utils.d.ts",
"import": "./dist/utils.mjs",
"default": "./dist/utils.js"
+ },
+ "./new-array": {
+ "types": "./dist/new-array.d.ts",
+ "import": "./dist/new-array.mjs",
+ "default": "./dist/new-array.js"
}
},
"keywords": [],
diff --git a/readme.md b/readme.md
index 65aa2c3..b68088d 100644
--- a/readme.md
+++ b/readme.md
@@ -262,6 +262,20 @@ const validate = (input: unknown) => {
};
```
+### Make `new Array()` return `unknown[]`
+
+With `new Array()` you can introduce `any`'s into your code:
+
+```ts
+import "@total-typescript/ts-reset/new-array";
+
+const arr = new Array(); // unknown[]
+
+const arr2 = new Array(10); // length is 10, but the type is unknown[]
+
+const inferred = new Array(1, 2, 3); // number[]
+```
+
## Rules we won't add
### `Object.keys`/`Object.entries`
diff --git a/src/entrypoints/new-array.d.ts b/src/entrypoints/new-array.d.ts
new file mode 100644
index 0000000..08a963b
--- /dev/null
+++ b/src/entrypoints/new-array.d.ts
@@ -0,0 +1,4 @@
+interface ArrayConstructor {
+ new (arrayLength?: number): unknown[];
+ (arrayLength?: number): unknown[];
+}
diff --git a/src/entrypoints/recommended.d.ts b/src/entrypoints/recommended.d.ts
index 6eabca1..a7e813b 100644
--- a/src/entrypoints/recommended.d.ts
+++ b/src/entrypoints/recommended.d.ts
@@ -4,3 +4,4 @@
///
///
///
+///
diff --git a/src/tests/new-array.ts b/src/tests/new-array.ts
new file mode 100644
index 0000000..c2fe22c
--- /dev/null
+++ b/src/tests/new-array.ts
@@ -0,0 +1,22 @@
+import { doNotExecute, Equal, Expect } from "./utils";
+
+doNotExecute(() => {
+ // check that new array is inferred correctly to unknown[]
+ const unknownArr = new Array();
+
+ type tests = [Expect>];
+});
+
+doNotExecute(() => {
+ // array with length property
+ const unknownArr = new Array(10);
+
+ type tests = [Expect>];
+});
+
+doNotExecute(() => {
+ // array with items
+ const numberArray = new Array(1, 2);
+
+ type tests = [Expect>];
+});