如何将具有特定功能的对象定义为类型或接口?

Posted

技术标签:

【中文标题】如何将具有特定功能的对象定义为类型或接口?【英文标题】:How to define an object of specific functions as a type or an interface? 【发布时间】:2021-03-26 07:56:02 【问题描述】:

我尝试查看其他 similar questions,但其中大多数似乎是定义数组而不是对象。

作为一个整体,我对 Typescript 大多是新手,并且仍在尝试解决一些概念,同时拥有 C# 和 javascript 方面的经验。

我正在创建一个对象,它是对象中一个或多个命名函数的集合。每个函数都接受一个字符串数组或多个字符串,定义如下:

define function PluginCommand(argv: array, ...args:string[]): number;

现在,如何将多个 PluginCommands 分配给(最好)定义的对象,其中键可以是任何有效字符串?

【问题讨论】:

也许正在寻找Record<string, PluginCommand>?等效:[key: string]: PluginCommand. 【参考方案1】:

您应该能够执行以下操作:

interface Foo 
  bar: (args: Array<string>) => number;

如果您希望键是任何字符串,请执行以下操作:

interface Foo 
  [key: string]: (args: Array<string>) => number;

【讨论】:

这对于包含多个元素的对象如何工作?喜欢a:PluginCommand,b:PluginCommand...? 给定上面的接口“Foo”和函数“PluginCommand”,你可以这样做:const myObject: Foo = a: PluginCommand, b: PluginCommand 啊,是的,我现在明白了。谢谢。

以上是关于如何将具有特定功能的对象定义为类型或接口?的主要内容,如果未能解决你的问题,请参考以下文章

具有命名属性和不同类型的任意命名索引属性的打字稿接口[重复]

使用类型别名与接口在 Typescript 中注释 React 功能组件

如何使用ChromHMM鉴定染色质状态

获取具有类型过滤功能的 Android 联系人,仅限于特定帐户

javascript-引用类型--Object类型

测试小白之功能转自动化如何转?接口测试怎么测?大扫盲