Skip to content

Commit 787f5fb

Browse files
committed
fix tuples fixed length bug (ts v2.7)
Reference: microsoft/TypeScript#17765
1 parent 8cdf540 commit 787f5fb

File tree

1 file changed

+6
-6
lines changed

1 file changed

+6
-6
lines changed

src/index.ts

+6-6
Original file line numberDiff line numberDiff line change
@@ -496,7 +496,7 @@ export const dictionary = <C extends Any>(codomain: C, name?: string): Dictionar
496496
// unions
497497
//
498498

499-
export class UnionType<RTS extends [Any]> extends Type<any, TypeOf<RTS['_A']>> {
499+
export class UnionType<RTS extends Array<Any>> extends Type<any, TypeOf<RTS['_A']>> {
500500
readonly _tag: 'UnionType' = 'UnionType'
501501
constructor(readonly types: RTS, readonly name: string = `(${types.map(type => type.name).join(' | ')})`) {
502502
super(
@@ -526,18 +526,18 @@ export class UnionType<RTS extends [Any]> extends Type<any, TypeOf<RTS['_A']>> {
526526
}
527527
}
528528

529-
export const union = <RTS extends [Any]>(types: RTS, name?: string): UnionType<RTS> => new UnionType(types, name)
529+
export const union = <RTS extends Array<Any>>(types: RTS, name?: string): UnionType<RTS> => new UnionType(types, name)
530530

531531
//
532532
// intersections
533533
//
534534

535-
export class IntersectionType<RTS extends Array<Any>, I> extends Type<any, I> {
535+
export class IntersectionType<RTS extends Array<Any>, A> extends Type<any, A> {
536536
readonly _tag: 'IntersectionType' = 'IntersectionType'
537537
constructor(readonly types: RTS, readonly name: string = `(${types.map(type => type.name).join(' & ')})`) {
538538
super(
539539
name,
540-
(v): v is I => types.every(type => type.is(v)),
540+
(v): v is A => types.every(type => type.is(v)),
541541
(v, c) => {
542542
let deserialized = v
543543
let changed = false
@@ -594,12 +594,12 @@ export function intersection<RTS extends Array<Any>>(types: RTS, name?: string):
594594
// tuples
595595
//
596596

597-
export class TupleType<RTS extends Array<Any>, I> extends Type<any, I> {
597+
export class TupleType<RTS extends Array<Any>, A> extends Type<any, A> {
598598
readonly _tag: 'TupleType' = 'TupleType'
599599
constructor(readonly types: RTS, readonly name: string = `[${types.map(type => type.name).join(', ')}]`) {
600600
super(
601601
name,
602-
(v): v is I => types.every((type, i) => type.is(v[i])),
602+
(v): v is A => types.every((type, i) => type.is(v[i])),
603603
(v, c) =>
604604
arrayType.validate(v, c).chain(as => {
605605
const t: Array<any> = []

0 commit comments

Comments
 (0)