将动态API响应分配给打字稿界面

时间:2019-02-20 07:01:36

标签: javascript typescript

我是打字稿和Node.js的新手。我正在尝试分配一个响应,该响应是从对api接口的静态api调用获取的。我不想使用Object.keys或Obejct.values来获取所需的数据,但尝试为此使用typescirpt接口。

这是响应

// this is dynamic in nature
{ 
  return: [{ 
      'domain1.com': true, 
      'domaim2.com': true, 
      'domain3.com': true 
      }]
} 

域名密钥值不限于3,它可以是n。上面的响应甚至不是json,而是我从响应中得到的。

我正在使用以下ts接口分配响应。

 export interface ResponseString {
     Res: string;
 }

 export interface ServerRes {
         return: ResponseString[];
 }

try {
       data =  await getServerResponse();
   }
   catch (e) {
       console.error(e);
       throw new Error("Exception: failure ..");
   }
   try {
       const Servers: string[] = Object.keys(data.return[0]); // I want to use tyscrpit interface instread of object.keys to get the domains 

       for (const server of Servers) {
           // to be done
   }
   catch(e) {
        console.error(e);
   }

请分享您有关如何完成此操作的意见。

[更新]

我还收到其他类似下面的API响应,

{ return: [ 
    { 'domainroot.com':'domain1.com' : ['some valu, 'some other value'] } 
]}

这些响应也是动态的,但是只有键值发生了变化,而对象却没有变化,就像

{ ret: [ {'df':'df' : [ 'df', 'dfd']}]}

谢谢

2 个答案:

答案 0 :(得分:0)

您需要定义一个带有签名<?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xs="http://www.w3.org/2001/XMLSchema" exclude-result-prefixes="#all"> <xsl:output method="xml" omit-xml-declaration="no" indent="yes"/> <xsl:strip-space elements="*"/> <xsl:template match="Worker[Batch]"> <xsl:variable name="currElem" select="."/> <xsl:for-each select="1 to Days"> <xsl:apply-templates select="$currElem" mode="replicate"> <xsl:with-param name="dayNo" select="."/> </xsl:apply-templates> </xsl:for-each> <xsl:for-each select="1 to Units"> <xsl:apply-templates select="$currElem" mode="replicate"> <xsl:with-param name="dayNo" select="."/> </xsl:apply-templates> </xsl:for-each> </xsl:template> <xsl:template match="Worker" mode="replicate"> <xsl:param name="dayNo"/> <Worker> <xsl:sequence select="id, loc"/> <RecordNumber><xsl:value-of select="$dayNo"/></RecordNumber> <WorkerDays>1</WorkerDays> <StartDate> <xsl:value-of select="xs:date(StartDate) + xs:dayTimeDuration('P1D') * ($dayNo - 1)"/> </StartDate> </Worker> </xsl:template> <xsl:template match="@*|node()"> <xsl:copy><xsl:apply-templates select="@*|node()"/></xsl:copy> </xsl:template> </xsl:stylesheet> 的接口

string: boolean

Try it in the Typescript Playground

答案 1 :(得分:0)

这是类型定义

YourView.fillInSuperView(inset: UIEdgeInsets.zero)

无论如何,您都必须使用Objects.keys来枚举服务器