Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/467.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 对象的类型作为不应包含特定键的函数参数_Javascript_Typescript_Types - Fatal编程技术网

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;
}