diff --git a/Gulpfile.ts b/Gulpfile.ts
index fd353083433..a75882c5f46 100644
--- a/Gulpfile.ts
+++ b/Gulpfile.ts
@@ -138,6 +138,7 @@ const es2017LibrarySource = [
"es2017.sharedmemory.d.ts",
"es2017.string.d.ts",
"es2017.intl.d.ts",
+ "es2017.typedarrays.d.ts",
];
const es2017LibrarySourceMap = es2017LibrarySource.map(source =>
diff --git a/Jakefile.js b/Jakefile.js
index 7f0915ad7e9..89fcb6500dd 100644
--- a/Jakefile.js
+++ b/Jakefile.js
@@ -197,7 +197,8 @@ var es2017LibrarySource = [
"es2017.object.d.ts",
"es2017.sharedmemory.d.ts",
"es2017.string.d.ts",
- "es2017.intl.d.ts"
+ "es2017.intl.d.ts",
+ "es2017.typedarrays.d.ts",
];
var es2017LibrarySourceMap = es2017LibrarySource.map(function (source) {
diff --git a/src/compiler/commandLineParser.ts b/src/compiler/commandLineParser.ts
index b7003fbffd9..7ba9bd80843 100644
--- a/src/compiler/commandLineParser.ts
+++ b/src/compiler/commandLineParser.ts
@@ -141,6 +141,7 @@ namespace ts {
"es2017.sharedmemory": "lib.es2017.sharedmemory.d.ts",
"es2017.string": "lib.es2017.string.d.ts",
"es2017.intl": "lib.es2017.intl.d.ts",
+ "es2017.typedarrays": "lib.es2017.typedarrays.d.ts",
"esnext.asynciterable": "lib.esnext.asynciterable.d.ts",
}),
},
diff --git a/src/harness/unittests/commandLineParsing.ts b/src/harness/unittests/commandLineParsing.ts
index 01a208aa330..18e867cb9ea 100644
--- a/src/harness/unittests/commandLineParsing.ts
+++ b/src/harness/unittests/commandLineParsing.ts
@@ -60,7 +60,7 @@ namespace ts {
assertParseResult(["--lib", "es5,invalidOption", "0.ts"],
{
errors: [{
- messageText: "Argument for '--lib' option must be: 'es5', 'es6', 'es2015', 'es7', 'es2016', 'es2017', 'esnext', 'dom', 'dom.iterable', 'webworker', 'scripthost', 'es2015.core', 'es2015.collection', 'es2015.generator', 'es2015.iterable', 'es2015.promise', 'es2015.proxy', 'es2015.reflect', 'es2015.symbol', 'es2015.symbol.wellknown', 'es2016.array.include', 'es2017.object', 'es2017.sharedmemory', 'es2017.string', 'es2017.intl', 'esnext.asynciterable'.",
+ messageText: "Argument for '--lib' option must be: 'es5', 'es6', 'es2015', 'es7', 'es2016', 'es2017', 'esnext', 'dom', 'dom.iterable', 'webworker', 'scripthost', 'es2015.core', 'es2015.collection', 'es2015.generator', 'es2015.iterable', 'es2015.promise', 'es2015.proxy', 'es2015.reflect', 'es2015.symbol', 'es2015.symbol.wellknown', 'es2016.array.include', 'es2017.object', 'es2017.sharedmemory', 'es2017.string', 'es2017.intl', 'es2017.typedarrays', 'esnext.asynciterable'.",
category: ts.Diagnostics.Argument_for_0_option_must_be_Colon_1.category,
code: ts.Diagnostics.Argument_for_0_option_must_be_Colon_1.code,
@@ -263,7 +263,7 @@ namespace ts {
assertParseResult(["--lib", "es5,", "es7", "0.ts"],
{
errors: [{
- messageText: "Argument for '--lib' option must be: 'es5', 'es6', 'es2015', 'es7', 'es2016', 'es2017', 'esnext', 'dom', 'dom.iterable', 'webworker', 'scripthost', 'es2015.core', 'es2015.collection', 'es2015.generator', 'es2015.iterable', 'es2015.promise', 'es2015.proxy', 'es2015.reflect', 'es2015.symbol', 'es2015.symbol.wellknown', 'es2016.array.include', 'es2017.object', 'es2017.sharedmemory', 'es2017.string', 'es2017.intl', 'esnext.asynciterable'.",
+ messageText: "Argument for '--lib' option must be: 'es5', 'es6', 'es2015', 'es7', 'es2016', 'es2017', 'esnext', 'dom', 'dom.iterable', 'webworker', 'scripthost', 'es2015.core', 'es2015.collection', 'es2015.generator', 'es2015.iterable', 'es2015.promise', 'es2015.proxy', 'es2015.reflect', 'es2015.symbol', 'es2015.symbol.wellknown', 'es2016.array.include', 'es2017.object', 'es2017.sharedmemory', 'es2017.string', 'es2017.intl', 'es2017.typedarrays', 'esnext.asynciterable'.",
category: ts.Diagnostics.Argument_for_0_option_must_be_Colon_1.category,
code: ts.Diagnostics.Argument_for_0_option_must_be_Colon_1.code,
@@ -283,7 +283,7 @@ namespace ts {
assertParseResult(["--lib", "es5, ", "es7", "0.ts"],
{
errors: [{
- messageText: "Argument for '--lib' option must be: 'es5', 'es6', 'es2015', 'es7', 'es2016', 'es2017', 'esnext', 'dom', 'dom.iterable', 'webworker', 'scripthost', 'es2015.core', 'es2015.collection', 'es2015.generator', 'es2015.iterable', 'es2015.promise', 'es2015.proxy', 'es2015.reflect', 'es2015.symbol', 'es2015.symbol.wellknown', 'es2016.array.include', 'es2017.object', 'es2017.sharedmemory', 'es2017.string', 'es2017.intl', 'esnext.asynciterable'.",
+ messageText: "Argument for '--lib' option must be: 'es5', 'es6', 'es2015', 'es7', 'es2016', 'es2017', 'esnext', 'dom', 'dom.iterable', 'webworker', 'scripthost', 'es2015.core', 'es2015.collection', 'es2015.generator', 'es2015.iterable', 'es2015.promise', 'es2015.proxy', 'es2015.reflect', 'es2015.symbol', 'es2015.symbol.wellknown', 'es2016.array.include', 'es2017.object', 'es2017.sharedmemory', 'es2017.string', 'es2017.intl', 'es2017.typedarrays', 'esnext.asynciterable'.",
category: ts.Diagnostics.Argument_for_0_option_must_be_Colon_1.category,
code: ts.Diagnostics.Argument_for_0_option_must_be_Colon_1.code,
diff --git a/src/harness/unittests/convertCompilerOptionsFromJson.ts b/src/harness/unittests/convertCompilerOptionsFromJson.ts
index 09659762288..cbbe41ceadf 100644
--- a/src/harness/unittests/convertCompilerOptionsFromJson.ts
+++ b/src/harness/unittests/convertCompilerOptionsFromJson.ts
@@ -266,7 +266,7 @@ namespace ts {
file: undefined,
start: 0,
length: 0,
- messageText: "Argument for '--lib' option must be: 'es5', 'es6', 'es2015', 'es7', 'es2016', 'es2017', 'esnext', 'dom', 'dom.iterable', 'webworker', 'scripthost', 'es2015.core', 'es2015.collection', 'es2015.generator', 'es2015.iterable', 'es2015.promise', 'es2015.proxy', 'es2015.reflect', 'es2015.symbol', 'es2015.symbol.wellknown', 'es2016.array.include', 'es2017.object', 'es2017.sharedmemory', 'es2017.string', 'es2017.intl', 'esnext.asynciterable'.",
+ messageText: "Argument for '--lib' option must be: 'es5', 'es6', 'es2015', 'es7', 'es2016', 'es2017', 'esnext', 'dom', 'dom.iterable', 'webworker', 'scripthost', 'es2015.core', 'es2015.collection', 'es2015.generator', 'es2015.iterable', 'es2015.promise', 'es2015.proxy', 'es2015.reflect', 'es2015.symbol', 'es2015.symbol.wellknown', 'es2016.array.include', 'es2017.object', 'es2017.sharedmemory', 'es2017.string', 'es2017.intl', 'es2017.typedarrays', 'esnext.asynciterable'.",
code: Diagnostics.Argument_for_0_option_must_be_Colon_1.code,
category: Diagnostics.Argument_for_0_option_must_be_Colon_1.category
}]
@@ -297,7 +297,7 @@ namespace ts {
file: undefined,
start: 0,
length: 0,
- messageText: "Argument for '--lib' option must be: 'es5', 'es6', 'es2015', 'es7', 'es2016', 'es2017', 'esnext', 'dom', 'dom.iterable', 'webworker', 'scripthost', 'es2015.core', 'es2015.collection', 'es2015.generator', 'es2015.iterable', 'es2015.promise', 'es2015.proxy', 'es2015.reflect', 'es2015.symbol', 'es2015.symbol.wellknown', 'es2016.array.include', 'es2017.object', 'es2017.sharedmemory', 'es2017.string', 'es2017.intl', 'esnext.asynciterable'.",
+ messageText: "Argument for '--lib' option must be: 'es5', 'es6', 'es2015', 'es7', 'es2016', 'es2017', 'esnext', 'dom', 'dom.iterable', 'webworker', 'scripthost', 'es2015.core', 'es2015.collection', 'es2015.generator', 'es2015.iterable', 'es2015.promise', 'es2015.proxy', 'es2015.reflect', 'es2015.symbol', 'es2015.symbol.wellknown', 'es2016.array.include', 'es2017.object', 'es2017.sharedmemory', 'es2017.string', 'es2017.intl', 'es2017.typedarrays', 'esnext.asynciterable'.",
code: Diagnostics.Argument_for_0_option_must_be_Colon_1.code,
category: Diagnostics.Argument_for_0_option_must_be_Colon_1.category
}]
@@ -328,7 +328,7 @@ namespace ts {
file: undefined,
start: 0,
length: 0,
- messageText: "Argument for '--lib' option must be: 'es5', 'es6', 'es2015', 'es7', 'es2016', 'es2017', 'esnext', 'dom', 'dom.iterable', 'webworker', 'scripthost', 'es2015.core', 'es2015.collection', 'es2015.generator', 'es2015.iterable', 'es2015.promise', 'es2015.proxy', 'es2015.reflect', 'es2015.symbol', 'es2015.symbol.wellknown', 'es2016.array.include', 'es2017.object', 'es2017.sharedmemory', 'es2017.string', 'es2017.intl', 'esnext.asynciterable'.",
+ messageText: "Argument for '--lib' option must be: 'es5', 'es6', 'es2015', 'es7', 'es2016', 'es2017', 'esnext', 'dom', 'dom.iterable', 'webworker', 'scripthost', 'es2015.core', 'es2015.collection', 'es2015.generator', 'es2015.iterable', 'es2015.promise', 'es2015.proxy', 'es2015.reflect', 'es2015.symbol', 'es2015.symbol.wellknown', 'es2016.array.include', 'es2017.object', 'es2017.sharedmemory', 'es2017.string', 'es2017.intl', 'es2017.typedarrays', 'esnext.asynciterable'.",
code: Diagnostics.Argument_for_0_option_must_be_Colon_1.code,
category: Diagnostics.Argument_for_0_option_must_be_Colon_1.category
}]
@@ -359,7 +359,7 @@ namespace ts {
file: undefined,
start: 0,
length: 0,
- messageText: "Argument for '--lib' option must be: 'es5', 'es6', 'es2015', 'es7', 'es2016', 'es2017', 'esnext', 'dom', 'dom.iterable', 'webworker', 'scripthost', 'es2015.core', 'es2015.collection', 'es2015.generator', 'es2015.iterable', 'es2015.promise', 'es2015.proxy', 'es2015.reflect', 'es2015.symbol', 'es2015.symbol.wellknown', 'es2016.array.include', 'es2017.object', 'es2017.sharedmemory', 'es2017.string', 'es2017.intl', 'esnext.asynciterable'.",
+ messageText: "Argument for '--lib' option must be: 'es5', 'es6', 'es2015', 'es7', 'es2016', 'es2017', 'esnext', 'dom', 'dom.iterable', 'webworker', 'scripthost', 'es2015.core', 'es2015.collection', 'es2015.generator', 'es2015.iterable', 'es2015.promise', 'es2015.proxy', 'es2015.reflect', 'es2015.symbol', 'es2015.symbol.wellknown', 'es2016.array.include', 'es2017.object', 'es2017.sharedmemory', 'es2017.string', 'es2017.intl', 'es2017.typedarrays', 'esnext.asynciterable'.",
code: Diagnostics.Argument_for_0_option_must_be_Colon_1.code,
category: Diagnostics.Argument_for_0_option_must_be_Colon_1.category
}]
diff --git a/src/lib/es2017.d.ts b/src/lib/es2017.d.ts
index 80282355a45..87aa273140b 100644
--- a/src/lib/es2017.d.ts
+++ b/src/lib/es2017.d.ts
@@ -3,3 +3,4 @@
///
///
///
+///
diff --git a/src/lib/es2017.typedarrays.d.ts b/src/lib/es2017.typedarrays.d.ts
new file mode 100644
index 00000000000..a0b64135a30
--- /dev/null
+++ b/src/lib/es2017.typedarrays.d.ts
@@ -0,0 +1,35 @@
+interface Int8ArrayConstructor {
+ new (): Int8Array;
+}
+
+interface Uint8ArrayConstructor {
+ new (): Uint8Array;
+}
+
+interface Uint8ClampedArrayConstructor {
+ new (): Uint8ClampedArray;
+}
+
+interface Int16ArrayConstructor {
+ new (): Int16Array;
+}
+
+interface Uint16ArrayConstructor {
+ new (): Uint16Array;
+}
+
+interface Int32ArrayConstructor {
+ new (): Int32Array;
+}
+
+interface Uint32ArrayConstructor {
+ new (): Uint32Array;
+}
+
+interface Float32ArrayConstructor {
+ new (): Float32Array;
+}
+
+interface Float64ArrayConstructor {
+ new (): Float64Array;
+}
diff --git a/tests/baselines/reference/useTypedArrays1.js b/tests/baselines/reference/useTypedArrays1.js
new file mode 100644
index 00000000000..bbfcccec836
--- /dev/null
+++ b/tests/baselines/reference/useTypedArrays1.js
@@ -0,0 +1,22 @@
+//// [useTypedArrays1.ts]
+var int8Array = new Int8Array();
+var uint8Array = new Uint8Array();
+var uint8ClampedArray = new Uint8ClampedArray();
+var int16Array = new Int16Array();
+var uint16Array = new Uint16Array();
+var int32Array = new Int32Array();
+var uint32Array = new Uint32Array();
+var float32Array = new Float32Array();
+var float64Array = new Float64Array();
+
+
+//// [useTypedArrays1.js]
+var int8Array = new Int8Array();
+var uint8Array = new Uint8Array();
+var uint8ClampedArray = new Uint8ClampedArray();
+var int16Array = new Int16Array();
+var uint16Array = new Uint16Array();
+var int32Array = new Int32Array();
+var uint32Array = new Uint32Array();
+var float32Array = new Float32Array();
+var float64Array = new Float64Array();
diff --git a/tests/baselines/reference/useTypedArrays1.symbols b/tests/baselines/reference/useTypedArrays1.symbols
new file mode 100644
index 00000000000..ed41b0c24bd
--- /dev/null
+++ b/tests/baselines/reference/useTypedArrays1.symbols
@@ -0,0 +1,37 @@
+=== tests/cases/conformance/es2017/useTypedArrays1.ts ===
+var int8Array = new Int8Array();
+>int8Array : Symbol(int8Array, Decl(useTypedArrays1.ts, 0, 3))
+>Int8Array : Symbol(Int8Array, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --))
+
+var uint8Array = new Uint8Array();
+>uint8Array : Symbol(uint8Array, Decl(useTypedArrays1.ts, 1, 3))
+>Uint8Array : Symbol(Uint8Array, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --))
+
+var uint8ClampedArray = new Uint8ClampedArray();
+>uint8ClampedArray : Symbol(uint8ClampedArray, Decl(useTypedArrays1.ts, 2, 3))
+>Uint8ClampedArray : Symbol(Uint8ClampedArray, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --))
+
+var int16Array = new Int16Array();
+>int16Array : Symbol(int16Array, Decl(useTypedArrays1.ts, 3, 3))
+>Int16Array : Symbol(Int16Array, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --))
+
+var uint16Array = new Uint16Array();
+>uint16Array : Symbol(uint16Array, Decl(useTypedArrays1.ts, 4, 3))
+>Uint16Array : Symbol(Uint16Array, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --))
+
+var int32Array = new Int32Array();
+>int32Array : Symbol(int32Array, Decl(useTypedArrays1.ts, 5, 3))
+>Int32Array : Symbol(Int32Array, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --))
+
+var uint32Array = new Uint32Array();
+>uint32Array : Symbol(uint32Array, Decl(useTypedArrays1.ts, 6, 3))
+>Uint32Array : Symbol(Uint32Array, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --))
+
+var float32Array = new Float32Array();
+>float32Array : Symbol(float32Array, Decl(useTypedArrays1.ts, 7, 3))
+>Float32Array : Symbol(Float32Array, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --))
+
+var float64Array = new Float64Array();
+>float64Array : Symbol(float64Array, Decl(useTypedArrays1.ts, 8, 3))
+>Float64Array : Symbol(Float64Array, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --))
+
diff --git a/tests/baselines/reference/useTypedArrays1.types b/tests/baselines/reference/useTypedArrays1.types
new file mode 100644
index 00000000000..f3f27383a3e
--- /dev/null
+++ b/tests/baselines/reference/useTypedArrays1.types
@@ -0,0 +1,46 @@
+=== tests/cases/conformance/es2017/useTypedArrays1.ts ===
+var int8Array = new Int8Array();
+>int8Array : Int8Array
+>new Int8Array() : Int8Array
+>Int8Array : Int8ArrayConstructor
+
+var uint8Array = new Uint8Array();
+>uint8Array : Uint8Array
+>new Uint8Array() : Uint8Array
+>Uint8Array : Uint8ArrayConstructor
+
+var uint8ClampedArray = new Uint8ClampedArray();
+>uint8ClampedArray : Uint8ClampedArray
+>new Uint8ClampedArray() : Uint8ClampedArray
+>Uint8ClampedArray : Uint8ClampedArrayConstructor
+
+var int16Array = new Int16Array();
+>int16Array : Int16Array
+>new Int16Array() : Int16Array
+>Int16Array : Int16ArrayConstructor
+
+var uint16Array = new Uint16Array();
+>uint16Array : Uint16Array
+>new Uint16Array() : Uint16Array
+>Uint16Array : Uint16ArrayConstructor
+
+var int32Array = new Int32Array();
+>int32Array : Int32Array
+>new Int32Array() : Int32Array
+>Int32Array : Int32ArrayConstructor
+
+var uint32Array = new Uint32Array();
+>uint32Array : Uint32Array
+>new Uint32Array() : Uint32Array
+>Uint32Array : Uint32ArrayConstructor
+
+var float32Array = new Float32Array();
+>float32Array : Float32Array
+>new Float32Array() : Float32Array
+>Float32Array : Float32ArrayConstructor
+
+var float64Array = new Float64Array();
+>float64Array : Float64Array
+>new Float64Array() : Float64Array
+>Float64Array : Float64ArrayConstructor
+
diff --git a/tests/cases/conformance/es2017/useTypedArrays1.ts b/tests/cases/conformance/es2017/useTypedArrays1.ts
new file mode 100644
index 00000000000..e06bf91f317
--- /dev/null
+++ b/tests/cases/conformance/es2017/useTypedArrays1.ts
@@ -0,0 +1,12 @@
+// @target: es5
+// @lib: es5,es2017.typedarrays
+
+var int8Array = new Int8Array();
+var uint8Array = new Uint8Array();
+var uint8ClampedArray = new Uint8ClampedArray();
+var int16Array = new Int16Array();
+var uint16Array = new Uint16Array();
+var int32Array = new Int32Array();
+var uint32Array = new Uint32Array();
+var float32Array = new Float32Array();
+var float64Array = new Float64Array();