明确分配打字稿中的任何类型

时间:2019-08-07 11:00:14

标签: typescript any explicit

当前,我们正在将代码库迁移到打字稿,并且我们有许多地方可以使用任何类型。因此,我尝试将任何显式设置变量都强制执行。

这是示例代码段。

model = models.Sequential()
model.add(layers.Dense(64, activation="relu", input_shape=x_train[0].shape))
model.add(layers.Dense(64, activation="relu"))
model.add(layers.Dense(46, activation='softmax'))
model.compile(optimizer='rmsprop', loss=losses.categorical_crossentropy, metrics=['accuracy'])
model.fit(x_train, y_train, batch_size=512, epochs=20)

我知道tslint规则const a: string = 'h'; const b: any = 4; const message = a || b; // Here I would like to get warning that I am assigning any to the message, // so I would have to write const message: any = a || b; function say(x: string) { console.log(x); } say(message); (它不仅需要对所​​有变量进行typedef定义,而且不仅要对任何变量进行typedef定义),而且对typedef也要进行定义(在这种情况下不起作用)。

如果您要为其分配任何类型,是否有一种方法可以要求显式定义任何类型?

1 个答案:

答案 0 :(得分:1)

理想情况下,您应该避免使用any。根据定义,any可分配给任何事物和任何事物。这是不安全的,它也有传播的不幸习惯。

您可以使用更安全的unknown类型。这与any相似,因为您可以为其分配任何内容,并且用于表示您没有明确定义的类型的数据。与any不同,但是如果没有类型断言或类型保护,您将无法执行任何操作。 See any vs unknown

其他可以使tslint no-any阻止所有人使用any并注意诸如JSON.parse之类的预定义功能,这些功能现在可能仍会潜入any中,并且然后。