我有以下几种类型:
type Options = 'A' | 'B' | 'C' | 'D'
type SpecificOptions = 'A' | 'B'
type OptionsValueType = {
A: () => void,
B: string
}
我用那些来构建以下类方法:
declare class MyClass {
myFunction(option: 'A', value: OptionsValueType['A'])
myFunction(option: 'B', value: OptionsValueType['B'])
myFunction(option: Exclude<Options, SpecificOptions>, value: number)
}
我也有一些代码使用myFunction
在循环内调用Function.prototype.apply
,看起来像这样:
const calls = [
['A', 1],
['B', 1],
['C', 1],
]
for (const call of calls) {
a.myFunction.apply(undefined, call)
}
但是上面的代码没有显示任何类型错误。
我无法在as const
数组上使用calls
,因为它是动态构建的(即使可以,它似乎也不起作用)。
如何键入上面的代码以确保正确输入.apply
?还是目前无法使用Typescript?
以上代码可用于this Typescript playground
答案 0 :(得分:0)
如果npm install --save python-shell
是动态生成的,则不会,则无法根据其值获取编译时错误。
您可以在运行时检查值并引发您自己的错误。否则,无论类型如何,JS都会将它们作为函数参数传递。
如果您想自己检查类型,可以执行以下操作:
var pyshell = require('python-shell');
pyshell.run('tensorflow.py', function (err, results) {
if (err) throw err;
console.log('tensorflow.py finished.');
console.log('results', results);
});