Skip to content

TypedArray constructor compile error #61134

Open
@andrewvarga

Description

@andrewvarga

🔎 Search Terms

When creating a class for a typed array, if this class is returned by indexing into an object, I get a compile error.

See attached playground link.

🕗 Version & Regression Information

  • This changed between versions 5.7.3 and 5.4.2, it used to work in 5.4.2

⏯ Playground Link

https://www.typescriptlang.org/play/?#code/KYDwDg9gTgLgBDAnmYcAqzgBMCCUoCGiAwhAHYDOMUArgMYzRwC8AUAJAA+cAqgJZkYADjyES5KrQbQO3foICMANlFFSlavUZRZvATADMAJlXiNU7boCSgkfjUTN0nVzg2Yy0+slaZr98ZejhZ+3ABiADYQBIYm9mY+zqysoJCwcHSOcN4wBIIULHAA3qxwcABCAJpoAKIAXHAArApGAAwANKW8AHIAylYA4t01ACIA+lW1Dc1GCp1lvQASAPIASmjTLUbzPf1Do2NLaxtNLQY7Vt0nMwAsnew8fYPD45fXLY2dHGEAMss47yMSk6AF9kmVUtB4JkNHACPFyogMChCiV2ABtHJ5GAUAB0kxqAF0yiTSWUGu47GJ7pjHNi8Y89i8JtUieS9LZTDSsflcUd1sSyaSKYoVPFuXTeYzngd+WhiQ15B4xdSOLSNPTcW9BULhW5BIFxWqeTjcdL9q8rjrFfpDaqMSa8b9-vLdSSGpForEuawQXCCjCqABuZKsQPwABGNAAZtHgFBCmRgAB3OCmcoxuNQAAUAEoQ6wAPSFuDLADWrBKZXDafixAiBAoFAayOwQXMvgTzH1wlMIerWToiZTtbE9cbFGzUdj8facA6cAU+d9yWL2QgAFswHwIqgavgZFWMoPN5Ak4JW4VHfjWf3j7CvA2my3MLg68FO4V4WJEa30Zkt3IYAL0wQk7xrIduyTVNHwnKdM1nec5yXIM4DXGpwGABhsHnABaBQ4SgABzGgN2AnEV2SIA

💻 Code

export type TypedArrayConstructor =
	| Uint8ArrayConstructor
	| Uint16ArrayConstructor
	| Uint32ArrayConstructor
	| Int8ArrayConstructor
	| Int16ArrayConstructor
	| Int32ArrayConstructor
	| Float32ArrayConstructor

export const Constants = {
  BYTE: 5120,
  UNSIGNED_BYTE: 5121,
  SHORT: 5122,
  UNSIGNED_SHORT: 5123,
  INT: 5124,
	UNSIGNED_INT: 5125,

	FLOAT: 5126,
}

  export const arrayByType = {
	[Constants.BYTE]           : Int8Array,
	[Constants.UNSIGNED_BYTE]  : Uint8Array,
	[Constants.SHORT]          : Int16Array,
	[Constants.UNSIGNED_SHORT] : Uint16Array,
	[Constants.INT]            : Int32Array,
	[Constants.UNSIGNED_INT]   : Uint32Array,
	[Constants.FLOAT]          : Float32Array,
} as const;


const buffer = new ArrayBuffer();

// Ok
{
  const ArrayClass: TypedArrayConstructor = Int8Array;
  const c = new ArrayClass(buffer, 0, 1);
}

// Compile Error
{
  const componentType = Constants.BYTE;
  const ArrayClass: TypedArrayConstructor = arrayByType[componentType];
  const c = new ArrayClass(buffer, 0, 1); // Expected 0-1 arguments
}

🙁 Actual behavior

The last line returns a compile error.

🙂 Expected behavior

There should be no compile errors.

Additional information about the issue

No response

Metadata

Metadata

Assignees

Labels

Needs InvestigationThis issue needs a team member to investigate its status.

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions