From 5e1613e5f18a9dc394efefc9ac4a2328eaf9c5ff Mon Sep 17 00:00:00 2001 From: Alexander O'Mara Date: Thu, 14 Nov 2024 21:20:04 -0500 Subject: [PATCH] Better type --- member/f32.ts | 4 ++-- member/f64.ts | 4 ++-- member/i16.ts | 6 +++--- member/i24.ts | 6 +++--- member/i32.ts | 6 +++--- member/i64.ts | 6 +++--- member/i8.ts | 10 +++++----- member/struct.ts | 4 ++-- type.ts | 12 ++++++------ 9 files changed, 29 insertions(+), 29 deletions(-) diff --git a/member/f32.ts b/member/f32.ts index 102c1ee..ab0e566 100644 --- a/member/f32.ts +++ b/member/f32.ts @@ -1,4 +1,4 @@ -import type { KeyofType } from '../type.ts'; +import type { KeyofExtends } from '../type.ts'; import type { Struct } from '../struct.ts'; /** @@ -13,7 +13,7 @@ import type { Struct } from '../struct.ts'; export function memberF32( StructT: T, offset: number, - member: KeyofType, + member: KeyofExtends, littleEndian: boolean | null = null, ): number { Object.defineProperty(StructT.prototype, member, { diff --git a/member/f64.ts b/member/f64.ts index 4c05460..970978e 100644 --- a/member/f64.ts +++ b/member/f64.ts @@ -1,4 +1,4 @@ -import type { KeyofType } from '../type.ts'; +import type { KeyofExtends } from '../type.ts'; import type { Struct } from '../struct.ts'; /** @@ -13,7 +13,7 @@ import type { Struct } from '../struct.ts'; export function memberF64( StructT: T, offset: number, - member: KeyofType, + member: KeyofExtends, littleEndian: boolean | null = null, ): number { Object.defineProperty(StructT.prototype, member, { diff --git a/member/i16.ts b/member/i16.ts index aa8ebc3..d927967 100644 --- a/member/i16.ts +++ b/member/i16.ts @@ -1,4 +1,4 @@ -import type { KeyofType } from '../type.ts'; +import type { KeyofExtends } from '../type.ts'; import type { Struct } from '../struct.ts'; /** @@ -13,7 +13,7 @@ import type { Struct } from '../struct.ts'; export function memberI16( StructT: T, offset: number, - member: KeyofType, + member: KeyofExtends, littleEndian: boolean | null = null, ): number { Object.defineProperty(StructT.prototype, member, { @@ -46,7 +46,7 @@ export function memberI16( export function memberU16( StructT: T, offset: number, - member: KeyofType, + member: KeyofExtends, littleEndian: boolean | null = null, ): number { Object.defineProperty(StructT.prototype, member, { diff --git a/member/i24.ts b/member/i24.ts index 0865f5b..2e50514 100644 --- a/member/i24.ts +++ b/member/i24.ts @@ -1,4 +1,4 @@ -import type { KeyofType } from '../type.ts'; +import type { KeyofExtends } from '../type.ts'; import type { Struct } from '../struct.ts'; import { getInt24, getUint24, setInt24, setUint24 } from '../util.ts'; @@ -14,7 +14,7 @@ import { getInt24, getUint24, setInt24, setUint24 } from '../util.ts'; export function memberI24( StructT: T, offset: number, - member: KeyofType, + member: KeyofExtends, littleEndian: boolean | null = null, ): number { Object.defineProperty(StructT.prototype, member, { @@ -49,7 +49,7 @@ export function memberI24( export function memberU24( StructT: T, offset: number, - member: KeyofType, + member: KeyofExtends, littleEndian: boolean | null = null, ): number { Object.defineProperty(StructT.prototype, member, { diff --git a/member/i32.ts b/member/i32.ts index b2a7e08..d5beeec 100644 --- a/member/i32.ts +++ b/member/i32.ts @@ -1,4 +1,4 @@ -import type { KeyofType } from '../type.ts'; +import type { KeyofExtends } from '../type.ts'; import type { Struct } from '../struct.ts'; /** @@ -13,7 +13,7 @@ import type { Struct } from '../struct.ts'; export function memberI32( StructT: T, offset: number, - member: KeyofType, + member: KeyofExtends, littleEndian: boolean | null = null, ): number { Object.defineProperty(StructT.prototype, member, { @@ -46,7 +46,7 @@ export function memberI32( export function memberU32( StructT: T, offset: number, - member: KeyofType, + member: KeyofExtends, littleEndian: boolean | null = null, ): number { Object.defineProperty(StructT.prototype, member, { diff --git a/member/i64.ts b/member/i64.ts index b003eb0..04438d5 100644 --- a/member/i64.ts +++ b/member/i64.ts @@ -1,4 +1,4 @@ -import type { KeyofType } from '../type.ts'; +import type { KeyofExtends } from '../type.ts'; import type { Struct } from '../struct.ts'; /** @@ -13,7 +13,7 @@ import type { Struct } from '../struct.ts'; export function memberI64( StructT: T, offset: number, - member: KeyofType, + member: KeyofExtends, littleEndian: boolean | null = null, ): number { Object.defineProperty(StructT.prototype, member, { @@ -46,7 +46,7 @@ export function memberI64( export function memberU64( StructT: T, offset: number, - member: KeyofType, + member: KeyofExtends, littleEndian: boolean | null = null, ): number { Object.defineProperty(StructT.prototype, member, { diff --git a/member/i8.ts b/member/i8.ts index 8a8ae41..12f47b1 100644 --- a/member/i8.ts +++ b/member/i8.ts @@ -1,4 +1,4 @@ -import type { KeyofType, ReadonlyKeyofType } from '../type.ts'; +import type { KeyofExtends, ReadonlyKeyofExtends } from '../type.ts'; import type { Struct } from '../struct.ts'; /** @@ -12,7 +12,7 @@ import type { Struct } from '../struct.ts'; export function memberI8( StructT: T, offset: number, - member: KeyofType, + member: KeyofExtends, ): number { Object.defineProperty(StructT.prototype, member, { get(this: T['prototype']): number { @@ -36,7 +36,7 @@ export function memberI8( export function memberU8( StructT: T, offset: number, - member: KeyofType, + member: KeyofExtends, ): number { Object.defineProperty(StructT.prototype, member, { get(this: T['prototype']): number { @@ -61,7 +61,7 @@ export function memberU8( export function memberI8A( StructT: T, offset: number, - member: ReadonlyKeyofType, + member: ReadonlyKeyofExtends, count: number, ): number { Object.defineProperty(StructT.prototype, member, { @@ -84,7 +84,7 @@ export function memberI8A( export function memberU8A( StructT: T, offset: number, - member: ReadonlyKeyofType, + member: ReadonlyKeyofExtends, count: number, ): number { Object.defineProperty(StructT.prototype, member, { diff --git a/member/struct.ts b/member/struct.ts index ad2bb1f..c3ff648 100644 --- a/member/struct.ts +++ b/member/struct.ts @@ -1,4 +1,4 @@ -import type { ReadonlyKeyofType } from '../type.ts'; +import type { ReadonlyKeyofExtends } from '../type.ts'; import type { Struct } from '../struct.ts'; /** @@ -14,7 +14,7 @@ export function memberStruct( StructM: M, StructT: T, offset: number, - member: ReadonlyKeyofType, + member: ReadonlyKeyofExtends, littleEndian: boolean | null = null, ): number { Object.defineProperty(StructT.prototype, member, { diff --git a/type.ts b/type.ts index 73e6a27..cad245d 100644 --- a/type.ts +++ b/type.ts @@ -19,17 +19,17 @@ export type ReadonlyKeyof = NonNullable< >; /** - * Keys for a given value type. + * Keys of a type that another type extends. */ -export type KeyofType = { - [K in keyof T]: T[K] extends U ? K : never; +export type KeyofExtends = { + [K in keyof T]: E extends T[K] ? K : never; }[keyof T]; /** - * Readonly keys for a given value type. + * Readonly keys of a type that another type extends. */ -export type ReadonlyKeyofType = { - [K in ReadonlyKeyof]: T[K] extends U ? K : never; +export type ReadonlyKeyofExtends = { + [K in ReadonlyKeyof]: E extends T[K] ? K : never; }[ReadonlyKeyof]; /**