Javascript 对象的类型作为不应包含特定键的函数参数
我在跟踪库周围有一个包装函数,它设置了一些必需的属性。我的包装器函数不包括一个任意的有效载荷,我将把它传递给跟踪函数。在一个示例中,这将如下所示:Javascript 对象的类型作为不应包含特定键的函数参数,javascript,typescript,types,Javascript,Typescript,Types,我在跟踪库周围有一个包装函数,它设置了一些必需的属性。我的包装器函数不包括一个任意的有效载荷,我将把它传递给跟踪函数。在一个示例中,这将如下所示: //我的跟踪函数将虚构和必需的“time”属性设置为默认值 const track=(有效载荷)=>{trackingLib.track({time:Date.now(),…payload}} //以后可以像这样使用吗 跟踪({查看:'设置',操作:'删除帐户'}) 我现在想禁止我的功能的用户在有效负载中使用time(或其他预定义键): track
//我的跟踪函数将虚构和必需的“time”属性设置为默认值
const track=(有效载荷)=>{trackingLib.track({time:Date.now(),…payload}}
//以后可以像这样使用吗
跟踪({查看:'设置',操作:'删除帐户'})
我现在想禁止我的功能的用户在有效负载中使用time
(或其他预定义键):
track({time:1337})//应该出错
磁道({timestamp:1337})//不应出错
如何键入payload
以允许将“每个”字符串作为键(值不重要),但某些预定义字符串除外(我前面知道,因此它们不需要是动态的)
有人能给我指出正确的方向吗?谢谢你的帮助 感觉有点老套,但以下内容适用于大多数用例。另一个缺点是,您的编辑器可能会建议将时间作为属性。不过,这仍然是我能想到的最好(且易于实施)的解决方案:
type Payload {
[key: string]: unknown;
time?: never;
}