1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95
|
//// [tests/cases/conformance/types/tuple/named/partiallyNamedTuples.ts] ////
//// [partiallyNamedTuples.ts]
type NamedAndAnonymous = [a: string, number];
function fa1(...args: NamedAndAnonymous) {}
function fa2(a: NamedAndAnonymous, ...args: NamedAndAnonymous) {}
type NamedAnonymousMixed = [a: string, number, c: number, NamedAndAnonymous];
function fb1(...args: NamedAnonymousMixed) {}
function fb2(a: NamedAnonymousMixed, ...args: NamedAnonymousMixed) {}
function fb3(a: NamedAnonymousMixed, ...args: NamedAnonymousMixed[3]) {}
type ToAnonymousTuple<T extends unknown[]> = {
[K in keyof T]: [K, T[K], keyof T, T];
};
type AnonymousToAnonymous = ToAnonymousTuple<[boolean, number]>;
type MixedToAnonymous = ToAnonymousTuple<[boolean, second: number]>;
type NamedToAnonymous = ToAnonymousTuple<[first: boolean, second: number]>;
type ToMixedTuple<T extends unknown[]> = {
[K in keyof T]: [K, second: T[K], keyof T, fourth: T];
};
type AnonymousToMixed = ToMixedTuple<[boolean, number]>;
type MixedToMixed = ToMixedTuple<[boolean, second: number]>;
type NamedToMixed = ToMixedTuple<[first: boolean, second: number]>;
type MixedSpread = [first: boolean, ...[second: string]];
type ConditionalTuple = [
first: boolean,
...(0 extends 0 ? [second: string] : [])
];
type AddMixedConditional<T> = [
first: boolean,
null,
third: T extends number ? "a" : "b",
...(T extends 0 ? [fourth: "c"] : [])
];
type AddMixedConditionalBoolean = AddMixedConditional<boolean>;
type AddMixedConditionalLiteral = AddMixedConditional<0>;
type AddMixedConditionalNumberPrimitive = AddMixedConditional<number>;
declare function test<T extends readonly unknown[]>(
arg: [
...{
[K in keyof T]: {
type: T[K];
};
}
]
): T;
declare const input: [first: { type: number }, { type: string }];
const output = test(input);
//// [partiallyNamedTuples.js]
function fa1() {
var args = [];
for (var _i = 0; _i < arguments.length; _i++) {
args[_i] = arguments[_i];
}
}
function fa2(a) {
var args = [];
for (var _i = 1; _i < arguments.length; _i++) {
args[_i - 1] = arguments[_i];
}
}
function fb1() {
var args = [];
for (var _i = 0; _i < arguments.length; _i++) {
args[_i] = arguments[_i];
}
}
function fb2(a) {
var args = [];
for (var _i = 1; _i < arguments.length; _i++) {
args[_i - 1] = arguments[_i];
}
}
function fb3(a) {
var args = [];
for (var _i = 1; _i < arguments.length; _i++) {
args[_i - 1] = arguments[_i];
}
}
var output = test(input);
|