TypeScript タプルの型推論改善

以下のような配列はタプル としてではなく、配列として型推論されます。

let a = [1, true] // a は (number | boolean)[]

型アサーションやconstアサーションを使わずに、[number, true] を推論したい場合、レストパラーメータを活用する方法があります。

function tuple<T extends unknown[]>(...ts: T): T {
    return ts
}

let b = tuple(1, true) // b は [number, boolean]