Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Typescript'时获取相应的类型;关键是什么?_Typescript - Fatal编程技术网

使用Typescript'时获取相应的类型;关键是什么?

使用Typescript'时获取相应的类型;关键是什么?,typescript,Typescript,我想这样做: interface StateItem<T extends StateItemType>{ id: string; values: { [key in keyof T]: Provider<corresponding typeof T> } } type Primitive = number | string | Position; interface StateItemType { [key: stri

我想这样做:

interface StateItem<T extends StateItemType>{
    id: string;
    values: {
        [key in keyof T]: Provider<corresponding typeof T>
    }
}

type Primitive = number | string | Position; 

interface StateItemType {
    [key: string] : Primitive; 
}

interface Mover extends StateItemType  {
    center: Position; 
    speed: number; 
    vector: Position; 
    accruedVector: Position;
}

const mover : StateItem<Mover> = {
    id: "123", 
    values: {
         center: createRandomPosition(), 
         speed: createRandomNumber(), 
         vector: createRandomPosition(), 
         accruedVector: createRandomPosition(), 
    }
}


接口状态项{
id:字符串;
价值观:{
[key in keyof T]:提供程序
}
}
类型原语=数字|字符串|位置;
接口状态项类型{
[键:字符串]:原语;
}
接口移动器扩展了StateItemType{
中心:位置;
速度:数字;
向量:位置;
累计向量:位置;
}
常量移动器:StateItem={
身份证号码:“123”,
价值观:{
中心:createRandomPosition(),
速度:createRandomNumber(),
向量:createRandomPosition(),
应计向量:createRandomPosition(),
}
}
也就是说,给定一个接口
T
,它是一个简单的键:type map,当我创建一个
StateItem
时,它的实例必须有一个
values
对象,该对象包含所有这些键,以及
Provider
实例


我该怎么做

您可以使用以下类型访问
T
中每个键的属性值类型:

interface StateItem<T extends StateItemType>{
    id: string;
    values: {
        [key in keyof T]: Provider<T[key]>>
    }
}

希望,这会让事情变得更清楚一点

您可以使用以下类型访问
T
中每个键的属性值类型:

interface StateItem<T extends StateItemType>{
    id: string;
    values: {
        [key in keyof T]: Provider<T[key]>>
    }
}

希望,这会让事情变得更清楚一点

不确定,您所说的T的对应类型是什么意思。对于从
值映射的类型中的每个
,您可以使用
T[key]
访问
的对应值,如
值:{[key in keyof T]:Provider}
。这就是你想要的吗?提供者到底是什么?@ford04-是的,我刚刚看到它是有效的。我没有意识到,
引用会保留到该行的其余部分。如果您喜欢将其作为答案发布,那么准确地解释
引用是如何保留的将非常有用。不确定您所说的T的对应类型是什么意思。对于
映射类型中的每个
,您可以使用
T[key]访问
的对应值
类似
值:{[key-in-keyof-T]:Provider}
。这就是你想要的吗?提供者到底是什么?@ford04-是的,我刚刚看到它是有效的。我没有意识到,
引用会保留到该行的其余部分。如果你喜欢把它作为一个答案,那么准确地解释一下
引用是如何被保留的,这会很有用。