第三方软件包的功能如下所示。。。
function asKey(key: KeyObject | KeyInput, parameters?: KeyParameters): RSAKey | ECKey | OKPKey | OctKey;
所有返回类型(RSAKEYECKEYOKPKEYOCTKEY
)都是扩展Key
的接口。
我正在使用askey
函数并尝试设置rsakey
的返回类型,因为我知道它只返回此1接口。。。
private foo = (): RSAKey => {
return asKey('foo');
};
但是,在以下情况下失败:
Type 'RSAKey | ECKey | OKPKey | OctKey' is not assignable to type 'RSAKey'.
Type 'ECKey' is not assignable to type 'RSAKey'.
Types of property 'kty' are incompatible.
Type '"EC"' is not assignable to type '"RSA"'.ts(2322)
如果我在foo函数中将返回类型更改为key
,我不会收到任何错误,但这不是我想要的,因为RSAKey有一个额外的函数,我想调用它,但它不在key中。 我怎样才能最好地使这个返回类型工作?
当您编写以下代码时
private foo = (): RSAKey => {
return asKey('foo');
};
Typescript正在查看askey
,发现可能有多个不同的类型可以返回,而foo
无法处理它们,这就是为什么会出现错误的原因。
如果您知道askey
将只返回rsakey
类型,则必须告诉Typescript:
没事,我知道怎么回事。 相信我,类型是RSAKey
您可以使用关键字作为
执行此操作
private foo = (): RSAKey => {
return asKey('foo') as RSAKey;
};