microsoft / microsoft/TypeScript

TypedArray constructor compile error

オープン
#61,134 コメント 4 件 リアクション 0 件 担当者 1 名 GitHub で見る

@rbuckton がすでに取り組んでいます。

2025年2月7日 から。

Needs Investigation
主要言語
Go
スター
111k
フォーク
14.3k
平均マージ
2日 4時間
マージ済み PR(30日)
132

説明

🔎 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

コントリビューションガイド

コントリビューションガイドを開く

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

評価

この issue はまだ評価されていません。

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。