diff --git a/src/lib/es5.d.ts b/src/lib/es5.d.ts index a74b3cb4c2111..24b82bbf95274 100644 --- a/src/lib/es5.d.ts +++ b/src/lib/es5.d.ts @@ -1814,7 +1814,7 @@ interface DataView { interface DataViewConstructor { readonly prototype: DataView; - new(buffer: ArrayBufferLike, byteOffset?: number, byteLength?: number): DataView; + new(buffer: ArrayBufferLike & { BYTES_PER_ELEMENT?: never }, byteOffset?: number, byteLength?: number): DataView; } declare var DataView: DataViewConstructor; diff --git a/tests/baselines/reference/dataViewConstructor.errors.txt b/tests/baselines/reference/dataViewConstructor.errors.txt new file mode 100644 index 0000000000000..99dd69b37c63c --- /dev/null +++ b/tests/baselines/reference/dataViewConstructor.errors.txt @@ -0,0 +1,13 @@ +tests/cases/compiler/dataViewConstructor.ts(1,14): error TS2345: Argument of type 'Uint8Array' is not assignable to parameter of type 'ArrayBuffer & { BYTES_PER_ELEMENT?: never; }'. + Type 'Uint8Array' is not assignable to type '{ BYTES_PER_ELEMENT?: never; }'. + Types of property 'BYTES_PER_ELEMENT' are incompatible. + Type 'number' is not assignable to type 'never'. + + +==== tests/cases/compiler/dataViewConstructor.ts (1 errors) ==== + new DataView(new Uint8Array(32)); // should error + ~~~~~~~~~~~~~~~~~~ +!!! error TS2345: Argument of type 'Uint8Array' is not assignable to parameter of type 'ArrayBuffer & { BYTES_PER_ELEMENT?: never; }'. +!!! error TS2345: Type 'Uint8Array' is not assignable to type '{ BYTES_PER_ELEMENT?: never; }'. +!!! error TS2345: Types of property 'BYTES_PER_ELEMENT' are incompatible. +!!! error TS2345: Type 'number' is not assignable to type 'never'. \ No newline at end of file diff --git a/tests/baselines/reference/dataViewConstructor.js b/tests/baselines/reference/dataViewConstructor.js new file mode 100644 index 0000000000000..f4d94709a97d1 --- /dev/null +++ b/tests/baselines/reference/dataViewConstructor.js @@ -0,0 +1,5 @@ +//// [dataViewConstructor.ts] +new DataView(new Uint8Array(32)); // should error + +//// [dataViewConstructor.js] +new DataView(new Uint8Array(32)); // should error diff --git a/tests/baselines/reference/dataViewConstructor.symbols b/tests/baselines/reference/dataViewConstructor.symbols new file mode 100644 index 0000000000000..abfac28a41796 --- /dev/null +++ b/tests/baselines/reference/dataViewConstructor.symbols @@ -0,0 +1,5 @@ +=== tests/cases/compiler/dataViewConstructor.ts === +new DataView(new Uint8Array(32)); // should error +>DataView : Symbol(DataView, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --)) +>Uint8Array : Symbol(Uint8Array, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --)) + diff --git a/tests/baselines/reference/dataViewConstructor.types b/tests/baselines/reference/dataViewConstructor.types new file mode 100644 index 0000000000000..73da86d7192cf --- /dev/null +++ b/tests/baselines/reference/dataViewConstructor.types @@ -0,0 +1,8 @@ +=== tests/cases/compiler/dataViewConstructor.ts === +new DataView(new Uint8Array(32)); // should error +>new DataView(new Uint8Array(32)) : DataView +>DataView : DataViewConstructor +>new Uint8Array(32) : Uint8Array +>Uint8Array : Uint8ArrayConstructor +>32 : 32 + diff --git a/tests/cases/compiler/dataViewConstructor.ts b/tests/cases/compiler/dataViewConstructor.ts new file mode 100644 index 0000000000000..c1f851b0415b7 --- /dev/null +++ b/tests/cases/compiler/dataViewConstructor.ts @@ -0,0 +1 @@ +new DataView(new Uint8Array(32)); // should error \ No newline at end of file diff --git a/tests/lib/lib.d.ts b/tests/lib/lib.d.ts index f1a04e4f8f2a5..2b9a8ffb07a90 100644 --- a/tests/lib/lib.d.ts +++ b/tests/lib/lib.d.ts @@ -1387,7 +1387,7 @@ interface DataView { } interface DataViewConstructor { - new (buffer: ArrayBuffer, byteOffset?: number, byteLength?: number): DataView; + new (buffer: ArrayBuffer & { BYTES_PER_ELEMENT?: never }, byteOffset?: number, byteLength?: number): DataView; } declare var DataView: DataViewConstructor;