小编And*_*kac的帖子

将命名元组转换为对象

有什么方法可以转换命名/标记元组

type Tup = [a: string, b: number];
Run Code Online (Sandbox Code Playgroud)

反对

type Obj = {
     a: string;
     b: number;
}
Run Code Online (Sandbox Code Playgroud)

最后一次尝试不起作用

type Map1<Container extends unknown[]> = {
     [K in keyof Container]: Container[K];
};

type Map2<Container extends Record<PropertyKey, any>, Replace> = {
     [K in keyof Container]: Replace;
};

let c1 : Map1<Tup> = {
     'a' : 's',
     'b' : 1,
};

let c2 : Map2<Tup> = {
     'a' : 's',
     'b' : 1,
};
Run Code Online (Sandbox Code Playgroud)

谢谢

typescript

10
推荐指数
1
解决办法
2438
查看次数

内置类型的 Typescript 别名

我如何为内置类型(例如实用程序类型)创建别名,我有与内置类型同名的定义,并且碰巧使用与内置类型同名的类型,例如:

interface Record { // <-- my definition

   toObject() : Record<string, object> // <-- built in definition
}
Run Code Online (Sandbox Code Playgroud)

不起作用

type TsRecord<K,V> = Record<K, V>
Run Code Online (Sandbox Code Playgroud)

如果有导入方法,我找不到参考

import {Record as TsRecord} from ?
Run Code Online (Sandbox Code Playgroud)

typescript

2
推荐指数
1
解决办法
468
查看次数

打字稿递归更改属性类型

如何递归地更改属性类型,我只能在单维中做到这一点,从实用程序类型来看似乎可以实现这一点,我已经尝试了很多次,但无法做到正确

type Convert<V, O extends object> = {
    [Key in keyof O] : V
}

// single
{
    let original = {
        data1 : 1,
        data2 : 1,

    };

    let converted : Convert<string, typeof original> = {
        data1: 'a',
        data2: 'a',
    };
}

// recursive
{
    let original = {
        data1 : 1,
        data2 : 1,
        data3 : {
            data1 : 1,
            data2 : 1,
        }
    };

    let converted : Convert<string, typeof original> = {
        data1: 'a',
        data2: …
Run Code Online (Sandbox Code Playgroud)

typescript

0
推荐指数
1
解决办法
160
查看次数

标签 统计

typescript ×3