当前,我们正在将代码库迁移到打字稿,并且我们有许多地方可以使用任何类型。因此,我尝试将任何显式设置变量都强制执行。
这是示例代码段。
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
也要进行定义(在这种情况下不起作用)。
如果您要为其分配任何类型,是否有一种方法可以要求显式定义任何类型?
答案 0 :(得分:1)
理想情况下,您应该避免使用any
。根据定义,any
可分配给任何事物和任何事物。这是不安全的,它也有传播的不幸习惯。
您可以使用更安全的unknown
类型。这与any
相似,因为您可以为其分配任何内容,并且用于表示您没有明确定义的类型的数据。与any
不同,但是如果没有类型断言或类型保护,您将无法执行任何操作。 See any
vs unknown
其他可以使tslint no-any
阻止所有人使用any
并注意诸如JSON.parse
之类的预定义功能,这些功能现在可能仍会潜入any
中,并且然后。