Skip to content

Commit

Permalink
Stricter types
Browse files Browse the repository at this point in the history
  • Loading branch information
AlexanderOMara committed Nov 15, 2024
1 parent 4438079 commit a03533d
Show file tree
Hide file tree
Showing 9 changed files with 25 additions and 16 deletions.
2 changes: 1 addition & 1 deletion member.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ import type { Struct } from './struct.ts';
*/
export function member<T extends typeof Struct>(
StructT: T,
name: keyof T['prototype'],
name: Exclude<keyof T['prototype'], keyof Struct>,
byteOffset: number,
byteLength: number,
littleEndian: boolean | null,
Expand Down
2 changes: 1 addition & 1 deletion member/f32.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ import { member } from '../member.ts';
*/
export function memberF32<T extends typeof Struct>(
StructT: T,
name: KeyofExtends<T['prototype'], number>,
name: Exclude<KeyofExtends<T['prototype'], number>, keyof Struct>,
byteOffset: number,
littleEndian: boolean | null = null,
): number {
Expand Down
2 changes: 1 addition & 1 deletion member/f64.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ import { member } from '../member.ts';
*/
export function memberF64<T extends typeof Struct>(
StructT: T,
name: KeyofExtends<T['prototype'], number>,
name: Exclude<KeyofExtends<T['prototype'], number>, keyof Struct>,
byteOffset: number,
littleEndian: boolean | null = null,
): number {
Expand Down
4 changes: 2 additions & 2 deletions member/i16.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ import { member } from '../member.ts';
*/
export function memberI16<T extends typeof Struct>(
StructT: T,
name: KeyofExtends<T['prototype'], number>,
name: Exclude<KeyofExtends<T['prototype'], number>, keyof Struct>,
byteOffset: number,
littleEndian: boolean | null = null,
): number {
Expand Down Expand Up @@ -46,7 +46,7 @@ export function memberI16<T extends typeof Struct>(
*/
export function memberU16<T extends typeof Struct>(
StructT: T,
name: KeyofExtends<T['prototype'], number>,
name: Exclude<KeyofExtends<T['prototype'], number>, keyof Struct>,
byteOffset: number,
littleEndian: boolean | null = null,
): number {
Expand Down
4 changes: 2 additions & 2 deletions member/i24.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ import { member } from '../member.ts';
*/
export function memberI24<T extends typeof Struct>(
StructT: T,
name: KeyofExtends<T['prototype'], number>,
name: Exclude<KeyofExtends<T['prototype'], number>, keyof Struct>,
byteOffset: number,
littleEndian: boolean | null = null,
): number {
Expand Down Expand Up @@ -49,7 +49,7 @@ export function memberI24<T extends typeof Struct>(
*/
export function memberU24<T extends typeof Struct>(
StructT: T,
name: KeyofExtends<T['prototype'], number>,
name: Exclude<KeyofExtends<T['prototype'], number>, keyof Struct>,
byteOffset: number,
littleEndian: boolean | null = null,
): number {
Expand Down
4 changes: 2 additions & 2 deletions member/i32.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ import { member } from '../member.ts';
*/
export function memberI32<T extends typeof Struct>(
StructT: T,
name: KeyofExtends<T['prototype'], number>,
name: Exclude<KeyofExtends<T['prototype'], number>, keyof Struct>,
byteOffset: number,
littleEndian: boolean | null = null,
): number {
Expand Down Expand Up @@ -46,7 +46,7 @@ export function memberI32<T extends typeof Struct>(
*/
export function memberU32<T extends typeof Struct>(
StructT: T,
name: KeyofExtends<T['prototype'], number>,
name: Exclude<KeyofExtends<T['prototype'], number>, keyof Struct>,
byteOffset: number,
littleEndian: boolean | null = null,
): number {
Expand Down
4 changes: 2 additions & 2 deletions member/i64.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ import { member } from '../member.ts';
*/
export function memberI64<T extends typeof Struct>(
StructT: T,
name: KeyofExtends<T['prototype'], bigint>,
name: Exclude<KeyofExtends<T['prototype'], bigint>, keyof Struct>,
byteOffset: number,
littleEndian: boolean | null = null,
): number {
Expand Down Expand Up @@ -46,7 +46,7 @@ export function memberI64<T extends typeof Struct>(
*/
export function memberU64<T extends typeof Struct>(
StructT: T,
name: KeyofExtends<T['prototype'], bigint>,
name: Exclude<KeyofExtends<T['prototype'], bigint>, keyof Struct>,
byteOffset: number,
littleEndian: boolean | null = null,
): number {
Expand Down
14 changes: 10 additions & 4 deletions member/i8.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ import { member } from '../member.ts';
*/
export function memberI8<T extends typeof Struct>(
StructT: T,
name: KeyofExtends<T['prototype'], number>,
name: Exclude<KeyofExtends<T['prototype'], number>, keyof Struct>,
byteOffset: number,
): number {
Object.defineProperty(StructT.prototype, name, {
Expand All @@ -36,7 +36,7 @@ export function memberI8<T extends typeof Struct>(
*/
export function memberU8<T extends typeof Struct>(
StructT: T,
name: KeyofExtends<T['prototype'], number>,
name: Exclude<KeyofExtends<T['prototype'], number>, keyof Struct>,
byteOffset: number,
): number {
Object.defineProperty(StructT.prototype, name, {
Expand All @@ -62,7 +62,10 @@ export function memberU8<T extends typeof Struct>(
export function memberI8A<T extends typeof Struct>(
count: number,
StructT: T,
name: ReadonlyKeyofExtends<T['prototype'], Int8Array>,
name: Exclude<
ReadonlyKeyofExtends<T['prototype'], Int8Array>,
keyof Struct
>,
byteOffset: number,
): number {
Object.defineProperty(StructT.prototype, name, {
Expand All @@ -89,7 +92,10 @@ export function memberI8A<T extends typeof Struct>(
export function memberU8A<T extends typeof Struct>(
count: number,
StructT: T,
name: ReadonlyKeyofExtends<T['prototype'], Uint8Array>,
name: Exclude<
ReadonlyKeyofExtends<T['prototype'], Uint8Array>,
keyof Struct
>,
byteOffset: number,
): number {
Object.defineProperty(StructT.prototype, name, {
Expand Down
5 changes: 4 additions & 1 deletion member/struct.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,10 @@ import { member } from '../member.ts';
export function memberStruct<M extends typeof Struct, T extends typeof Struct>(
StructM: M,
StructT: T,
name: ReadonlyKeyofExtends<T['prototype'], M['prototype']>,
name: Exclude<
ReadonlyKeyofExtends<T['prototype'], M['prototype']>,
keyof Struct
>,
byteOffset: number,
littleEndian: boolean | null = null,
): number {
Expand Down

0 comments on commit a03533d

Please sign in to comment.