如何将具有特定功能的对象定义为类型或接口?
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;
现在,如何将多个 PluginCommand
s 分配给(最好)定义的对象,其中键可以是任何有效字符串?
【问题讨论】:
也许正在寻找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 功能组件