microsoft / microsoft/TypeScript

`IntegerTypedArray` type required for use with `crypto.getRandomValues`

Đang mở
#61,768 2 bình luận 2 reaction 3 người được giao Xem trên GitHub

@RyanCavanaugh đang làm issue này rồi.

Từ ngày 19/9/2026.

  • #64343 của @copilot-swe-agent — đang mở
Bug Domain: lib.d.ts Needs Human Review
Ngôn ngữ chính
Go
Star
111k
Fork
14.3k
Merge trung bình
2 ngày 4 giờ
Pull request đã merge (30 ngày)
132

Mô tả

### ⚙ Compilation target

any

### ⚙ Library

latest

### Missing / Incorrect Definition

The current DOM types `` [are wrong](https://github.com/microsoft/TypeScript-DOM-lib-generator/issues/1194) for `crypto.getRandomValues`. `null` is never accepted, and `ArrayBufferView` is too broad as float arrays also aren't accepted.

However, [fixing](https://github.com/microsoft/TypeScript-DOM-lib-generator/pull/2028) in `TypeScript-DOM-lib-generator` requires conditional inclusion of `BigInt64Array | BigUint64Array` depending on ES2020 availability. I don't think there's a way to fix that within `TypeScript-DOM-lib-generator` without this upstream change in `TypeScript`.

`es5.d.ts`:

```ts
interface IntegerTypedArrayTypes {
Int8Array: Int8Array;
Int16Array: Int16Array;
Int32Array: Int32Array;
Uint8Array: Uint8Array;
Uint16Array: Uint16Array;
Uint32Array: Uint32Array;
Uint8ClampedArray: Uint8ClampedArray;
}

type IntegerTypedArray = IntegerTypedArrayTypes[keyof IntegerTypedArrayTypes];
```

`es2020.bigint.d.ts`:

```ts
interface IntegerTypedArrayTypes {
BigInt64Array: BigInt64Array;
BigUint64Array: BigUint64Array;
}
```

### Sample Code

```TypeScript
// Unused '@ts-expect-error' directive.(2578)
// @ts-expect-error
crypto.getRandomValues(null)
// Unused '@ts-expect-error' directive.(2578)
// @ts-expect-error
crypto.getRandomValues(new Float64Array())

declare const arr: Parameters[0]
const values = crypto.getRandomValues(arr)

// 'values' is possibly 'null'.(18047)
values.BYTES_PER_ELEMENT

// Property 'BYTES_PER_ELEMENT' does not exist on type 'ArrayBufferView'.(2339)
values!.BYTES_PER_ELEMENT
```

### Documentation Link

[10.1.1 The getRandomValues method - Web Cryptography Level 2](https://www.w3.org/TR/webcrypto/#dfn-Crypto-method-getRandomValues)

> If array is not an Int8Array, Uint8Array, Uint8ClampedArray, Int16Array, Uint16Array, Int32Array, Uint32Array, BigInt64Array, or BigUint64Array, then throw a TypeMismatchError and terminate the algorithm.

Hướng dẫn đóng góp

Mở hướng dẫn đóng góp

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Đánh giá

Issue này chưa được đánh giá.

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.