Typescript:具有所有基本属性并允许任何扩展的类型

问题描述 投票:0回答:1

假设我有一个界面,只描述我感兴趣的字段:

interface RestResponse {
    data: {
        name: string;
        value: number;
    }
    status: number;
}

我想将此接口用作实际REST响应的类型,该响应具有比上述更多的字段。例如。:

const sampleResponse = {
    data: {
        name: 'cat',
        value: 64,
        description: 'the field I won't use anywhere'
    }
    status: 200,
    isSuccessful: true
}

问题是sampleResponse应该是什么类型的?我做不到:

const sampleResponse: RestResponse = { ... }

因为该类型没有像isSuccessfuldata.description这样的字段。

这是RestResponse的延伸。我希望它具有界面中指定的所有字段,但不介意有任何其他字段。


到目前为止,我尝试查看https://www.typescriptlang.org/docs/handbook/advanced-types.html,但找不到任何有用的情况。

typescript types extend
1个回答
0
投票

您可以添加一个索引器,它允许任何值的任何键

这看起来像这样:

interface RestResponse {
  data: { 
    name: string;
    value: number;
  } 
  status: number;
  [key: string]: any;
}

What is a type indexer?

[key: string]: any是一个对象索引器。

[key: string]指定您可以向string类型的对象添加任何键

索引器后面的: any定义了键的值应该是any,因为any允许任何东西 - 你可以添加任何东西

© www.soinside.com 2019 - 2024. All rights reserved.