diff --git a/src/lib/core.d.ts b/src/lib/core.d.ts index 7259ff5081c..12df449931e 100644 --- a/src/lib/core.d.ts +++ b/src/lib/core.d.ts @@ -1210,7 +1210,7 @@ interface ArrayBuffer { interface ArrayBufferConstructor { prototype: ArrayBuffer; new (byteLength: number): ArrayBuffer; - isView(arg: any): boolean; + isView(arg: any): arg is ArrayBufferView; } declare var ArrayBuffer: ArrayBufferConstructor; diff --git a/tests/baselines/reference/arrayBufferIsViewNarrowsType.js b/tests/baselines/reference/arrayBufferIsViewNarrowsType.js new file mode 100644 index 00000000000..fcda4d5976b --- /dev/null +++ b/tests/baselines/reference/arrayBufferIsViewNarrowsType.js @@ -0,0 +1,13 @@ +//// [arrayBufferIsViewNarrowsType.ts] +var obj: Object; +if (ArrayBuffer.isView(obj)) { + // isView should be a guard that narrows type to ArrayBufferView. + var ab: ArrayBufferView = obj; +} + +//// [arrayBufferIsViewNarrowsType.js] +var obj; +if (ArrayBuffer.isView(obj)) { + // isView should be a guard that narrows type to ArrayBufferView. + var ab = obj; +} diff --git a/tests/baselines/reference/arrayBufferIsViewNarrowsType.symbols b/tests/baselines/reference/arrayBufferIsViewNarrowsType.symbols new file mode 100644 index 00000000000..eb7ffe7479e --- /dev/null +++ b/tests/baselines/reference/arrayBufferIsViewNarrowsType.symbols @@ -0,0 +1,17 @@ +=== tests/cases/compiler/arrayBufferIsViewNarrowsType.ts === +var obj: Object; +>obj : Symbol(obj, Decl(arrayBufferIsViewNarrowsType.ts, 0, 3)) +>Object : Symbol(Object, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) + +if (ArrayBuffer.isView(obj)) { +>ArrayBuffer.isView : Symbol(ArrayBufferConstructor.isView, Decl(lib.d.ts, --, --)) +>ArrayBuffer : Symbol(ArrayBuffer, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>isView : Symbol(ArrayBufferConstructor.isView, Decl(lib.d.ts, --, --)) +>obj : Symbol(obj, Decl(arrayBufferIsViewNarrowsType.ts, 0, 3)) + + // isView should be a guard that narrows type to ArrayBufferView. + var ab: ArrayBufferView = obj; +>ab : Symbol(ab, Decl(arrayBufferIsViewNarrowsType.ts, 3, 7)) +>ArrayBufferView : Symbol(ArrayBufferView, Decl(lib.d.ts, --, --)) +>obj : Symbol(obj, Decl(arrayBufferIsViewNarrowsType.ts, 0, 3)) +} diff --git a/tests/baselines/reference/arrayBufferIsViewNarrowsType.types b/tests/baselines/reference/arrayBufferIsViewNarrowsType.types new file mode 100644 index 00000000000..129b7d601d8 --- /dev/null +++ b/tests/baselines/reference/arrayBufferIsViewNarrowsType.types @@ -0,0 +1,18 @@ +=== tests/cases/compiler/arrayBufferIsViewNarrowsType.ts === +var obj: Object; +>obj : Object +>Object : Object + +if (ArrayBuffer.isView(obj)) { +>ArrayBuffer.isView(obj) : boolean +>ArrayBuffer.isView : (arg: any) => arg is ArrayBufferView +>ArrayBuffer : ArrayBufferConstructor +>isView : (arg: any) => arg is ArrayBufferView +>obj : Object + + // isView should be a guard that narrows type to ArrayBufferView. + var ab: ArrayBufferView = obj; +>ab : ArrayBufferView +>ArrayBufferView : ArrayBufferView +>obj : ArrayBufferView +} diff --git a/tests/cases/compiler/arrayBufferIsViewNarrowsType.ts b/tests/cases/compiler/arrayBufferIsViewNarrowsType.ts new file mode 100644 index 00000000000..ba653408c20 --- /dev/null +++ b/tests/cases/compiler/arrayBufferIsViewNarrowsType.ts @@ -0,0 +1,5 @@ +var obj: Object; +if (ArrayBuffer.isView(obj)) { + // isView should be a guard that narrows type to ArrayBufferView. + var ab: ArrayBufferView = obj; +} \ No newline at end of file