Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/9.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
Javascript 如何在TypeScript中访问接口的底层原始字段?_Javascript_Typescript_Interface_Typescript Typings - Fatal编程技术网

Javascript 如何在TypeScript中访问接口的底层原始字段?

Javascript 如何在TypeScript中访问接口的底层原始字段?,javascript,typescript,interface,typescript-typings,Javascript,Typescript,Interface,Typescript Typings,我对TypeScript有点陌生,想知道如何访问扩展接口的类的原始字段 e、 g 您可以将此类型[name:string]:string | undefined视为一个对象(字典),其中所有键都是字符串,值要么是字符串,要么是未定义的 这里有几个例子可以更好地理解它: 接口字典{ [名称:字符串]:字符串|未定义 } 常量x:字典={ 姓名:'约翰', 姓:多伊 }//好的 常量:字典={ 姓名:'约翰', 1:‘你好’ }//好的,因为JS在引擎盖下进行协同,所以您可以访问x['1'] /**

我对TypeScript有点陌生,想知道如何访问扩展接口的类的原始字段

e、 g


您可以将此类型
[name:string]:string | undefined
视为一个对象(字典),其中所有键都是字符串,值要么是字符串,要么是未定义的

这里有几个例子可以更好地理解它:

接口字典{
[名称:字符串]:字符串|未定义
}
常量x:字典={
姓名:'约翰',
姓:多伊
}//好的
常量:字典={
姓名:'约翰',
1:‘你好’
}//好的,因为JS在引擎盖下进行协同,所以您可以访问x['1']
/**
*索引类型更通用,因为您可以使用所需的任何键
*/
y['anykey'I want']//有效,返回未定义
y['()=>{}]//就像我说的,任何键)
常量z:字典={
姓名:23
}//错误,值可以是字符串或未定义,但不能是数字

您可以将此类型
[name:string]:string | undefined
视为一个对象(字典),其中所有键都是字符串,值要么是字符串,要么是未定义的

这里有几个例子可以更好地理解它:

接口字典{
[名称:字符串]:字符串|未定义
}
常量x:字典={
姓名:'约翰',
姓:多伊
}//好的
常量:字典={
姓名:'约翰',
1:‘你好’
}//好的,因为JS在引擎盖下进行协同,所以您可以访问x['1']
/**
*索引类型更通用,因为您可以使用所需的任何键
*/
y['anykey'I want']//有效,返回未定义
y['()=>{}]//就像我说的,任何键)
常量z:字典={
姓名:23
}//错误,值可以是字符串或未定义,但不能是数字

APIGatewayProxyEventHeaders
是一个对象,如下所示:

{
  key1: "somevalue",
  key2: "someothervalue",
  key3: undefined
}
const map = new Map(Object.entries(obj))
对象的接口定义意味着您需要测试键的存在和值的存在。如果两者都是真的,那么就有一个字符串

像这样:

// const obj: APIGatewayProxyEventHeaders

if (!!obj[key]) {
  // obj[key] is a string
}

if (obj.hasOwnProperty(key)) {
  // obj[key] is string | undefined
}
可以将此对象转换为如下所示的贴图:

{
  key1: "somevalue",
  key2: "someothervalue",
  key3: undefined
}
const map = new Map(Object.entries(obj))

现在您有了一个包含值的映射。但是这样做没有多大好处,因为您没有任何额外的类型信息—只有不同的数据结构。

APIGatewayProxyEventHeaders
是一个对象,如下所示:

{
  key1: "somevalue",
  key2: "someothervalue",
  key3: undefined
}
const map = new Map(Object.entries(obj))
对象的接口定义意味着您需要测试键的存在和值的存在。如果两者都是真的,那么就有一个字符串

像这样:

// const obj: APIGatewayProxyEventHeaders

if (!!obj[key]) {
  // obj[key] is a string
}

if (obj.hasOwnProperty(key)) {
  // obj[key] is string | undefined
}
可以将此对象转换为如下所示的贴图:

{
  key1: "somevalue",
  key2: "someothervalue",
  key3: undefined
}
const map = new Map(Object.entries(obj))


现在您有了一个包含值的映射。但是这并没有什么好处,因为您没有任何额外的类型信息-只是一个不同的数据结构。

我不确定[name:string]:string | undefined的类型是什么?
它是一个字符串索引对象,允许值的类型为
string
undefined
。好的,谢谢迈克!那么,我如何将其提取到它自己的变量中呢?请编辑您的问题,因为您的代码在哪里或有什么问题,或者您正试图用它做什么“访问类的原始字段”-它们只是类实例的原始属性。普通对象属性。没有“基础地图”之类的东西。我不明白,为什么这个问题被否决了@user1974753提供了一个示例
我不确定[name:string]:string | undefined的类型是什么?
它是一个字符串索引对象,允许值的类型为
string
undefined
。好的,谢谢Mike!那么,我如何将其提取到它自己的变量中呢?请编辑您的问题,因为您的代码在哪里或有什么问题,或者您正试图用它做什么“访问类的原始字段”-它们只是类实例的原始属性。普通对象属性。没有“基础地图”之类的东西。我不明白,为什么这个问题被否决了@user1974753提供了一个更简单的示例:
newmap(Object.entries(obj))
谢谢,我认为有一个方便的方法可以实现这一点!更简单:
newmap(Object.entries(obj))
谢谢,我想这是一个方便的方法!第二个将在TypeScript中失败,因为索引类型必须是字符串。@JoshWulf您的意思是y['1']?不,TS不会失败,因为JS协同。啊,我认为尝试显式构造它是不可传输的。但你是对的。我测试了它,它进行了强制。不久前,这对我来说是一个惊喜。我也不相信。)第二个将在TypeScript中失败,因为索引类型必须是字符串。@JoshWulf你的意思是y['1']?不,TS不会失败,因为JS协同。啊,我认为尝试显式构造它是不可传输的。但你是对的。我测试了它,它进行了强制。不久前,这对我来说是一个惊喜。我也不相信