type Wrap<T> = {
[Key in keyof T]: T extends {length:number} ? Promise<T[Key]> : null
};
// type _ = Wrap<['a', 'b']>;
// [Promise<"a">, Promise<"b">]
// type _ = Wrap<{0:"a", 1:"b"}>;
// { 0: null; 1: null }
```
type Wrap<T> = {
[Key in keyof T]: T extends {length:number} ? Promise<T[Key]> : null
};
// type _ = Wrap<['a', 'b']>;
// [Promise<"a">, Promise<"b">]
// type _ = Wrap<{0:"a", 1:"b"}>;
// { 0: null; 1: null }
```