以下内容不会因错误“声明的类型既不是void也不必须返回值或包含单个throw语句的函数”而编译。
有没有办法使编译器识别_notImplemented引发异常?
function _notImplemented() { throw new Error('not implemented'); } class Foo { bar() : boolean { _notImplemented(); }
我唯一能看到的解决方法是使用泛型。但这似乎有点骇人听闻。有没有更好的办法?
function _notImplemented() : T { throw new Error('not implemented'); } class Foo { bar() : boolean { return _notImplemented(); }
小智.. 5
您可以使用“ Either”而不是“ throw”。
Either是通常包含错误或结果的结构。因为它是任何其他类型,所以TypeScript可以轻松利用它。
例如:
function sixthCharacter(a: string): Either{ if (a.length >= 6) { return Either.right (a[5]); } else { return Either.left (new Error("a is to short")); } }
利用该函数的函数sixthCharacter
可以选择解包,返回本身,抛出错误或其他选项。
您需要选择一个包含Either的库-查看诸如TsMonad或monet.js之类的monad库。
您可以使用“ Either”而不是“ throw”。
Either是通常包含错误或结果的结构。因为它是任何其他类型,所以TypeScript可以轻松利用它。
例如:
function sixthCharacter(a: string): Either{ if (a.length >= 6) { return Either.right (a[5]); } else { return Either.left (new Error("a is to short")); } }
利用该函数的函数sixthCharacter
可以选择解包,返回本身,抛出错误或其他选项。
您需要选择一个包含Either的库-查看诸如TsMonad或monet.js之类的monad库。