我从事Swift开发已经有3年了,最近改用打字稿。
在Swift中,出现一个NSError类型的错误,它为我们提供了一些属性。
在JavaScript中,有任何错误。
为什么有错误?如何创建具有某些属性的自定义类并在整个项目中使用它?
try {
const decodedResult = decode(token)
// Adding userId in the headers to use in the models.
req.headers.userId = decodedResult.paylod.id
next()
} catch (error) {
console.log(error)
new errorController(401, 'Authentication required.', res)
}
现在这里的错误对象是any类型。我希望它是强类型的。
答案 0 :(得分:1)
任何类型都是我们在编写时都不知道的变量类型 一个应用程序。这些值可能来自动态内容,例如从 用户或第三方库。在这些情况下,我们要选择退出 类型检查,并让值通过编译时检查。至 为此,我们将它们标记为任何类型。
let notSure: any = 4;
notSure = "maybe a string instead";
notSure = false; // okay, definitely a boolean
您可以扩展打字稿中的Error
类以创建您的自定义错误处理程序
class MyError extends Error {
constructor(m: string) {
super(m);
}
anyFunction() {
return "Hello World " ;
}
}
try {
const decodedResult = decode(token)
// Adding userId in the headers to use in the models.
req.headers.userId = decodedResult.paylod.id
next()
} catch (error) {
console.log(error)
throw new MyError() // pass arguments of constructor if any
}
请参见Reference
答案 1 :(得分:1)
如https://basarat.gitbooks.io/typescript/docs/types/exceptions.html中所述,您可以抛出类似new Error()
的东西(以及其他任何东西,因为它将在最后被编译为javascirpt)
因此您可以创建一个新类,例如
export class MySpecificError extends Error
您可以抛出方法并陷入catch
条款中
但这仅适用于您自己编写的代码
答案 2 :(得分:0)
那是因为您可以with Ada.Text_IO ; use Ada.Text_IO;
procedure Main is
task type test1 is
entry start;
end test1;
task body test1 is
begin
accept start;
Put_Line("Haha");
end test1;
t1 : test1;
N : Integer := 10;
begin
while N /= 0 loop
t1.start;
N := N - 1;
end loop;
end Main;
用JavaScript进行任何操作:
throw
由于任何深层嵌套的代码都可能在某处扔东西,因此Typescript无法正确键入它,这就是“错误”具有 throw 1;
类型的原因。
Typeguards可帮助您缩小特定错误类型的范围:
any