如何在TypeScript中执行函数参数验证?
我有一个TypeScript类,我想用来管理复选框。看起来是这样的:如何在TypeScript中执行函数参数验证?,typescript,Typescript,我有一个TypeScript类,我想用来管理复选框。看起来是这样的: export class TriStateCheckboxManager { constructor(public checkBox: HTMLInputElement) { if (checkBox.type != "checkbox") { // What now? } } } 如果复选框的类型不等于checkbox,我如何引发错误?因为TypeS
export class TriStateCheckboxManager {
constructor(public checkBox: HTMLInputElement) {
if (checkBox.type != "checkbox") {
// What now?
}
}
}
如果复选框的类型不等于
checkbox
,我如何引发错误?因为TypeScript是JavaScript的超级集,它支持所有内置JavaScript函数、类型、对象、关键字等。您要查找的是throw
关键字,它将引发所需的异常
到目前为止,您的代码是好的,因此下面的代码将完成这项工作
export class TriStateCheckboxManager {
constructor(public checkBox: HTMLInputElement) {
if (checkBox.type !== "checkbox") {
// checkBox doesn't meet the reqruirements,
// so raise an error. Optionally, you could
// log a message, warning or whatever you want
// to the console.
console.warn("checkBox.type doesn't match.", checkBox, this);
throw "checkBox.type doesn't match." // Throw anything you want here
}
}
}
顺便说一句:强烈建议使用==
和===
用于JavaScript(因此是TypeScript)中的比较,而不是=代码>和==
。更多信息,请参阅
编辑:
正如MiMo在下面所说的,您可以抛出任何您想要的类型,因此对象也将是合适的canditate
我发现,如果您对JavaScript/TypeScript错误处理感兴趣,那么这篇文章看起来很有希望。这是在JavaScript中抛出错误的页面。因为TypeScript是JavaScript的超级集合,它支持所有内置JavaScript函数、类型、对象、关键字等。您要查找的是throw
关键字,它将引发所需的异常
到目前为止,您的代码是好的,因此下面的代码将完成这项工作
export class TriStateCheckboxManager {
constructor(public checkBox: HTMLInputElement) {
if (checkBox.type !== "checkbox") {
// checkBox doesn't meet the reqruirements,
// so raise an error. Optionally, you could
// log a message, warning or whatever you want
// to the console.
console.warn("checkBox.type doesn't match.", checkBox, this);
throw "checkBox.type doesn't match." // Throw anything you want here
}
}
}
顺便说一句:强烈建议使用==
和===
用于JavaScript(因此是TypeScript)中的比较,而不是=代码>和==
。更多信息,请参阅
编辑:
正如MiMo在下面所说的,您可以抛出任何您想要的类型,因此对象也将是合适的canditate
我发现,如果您对JavaScript/TypeScript错误处理感兴趣,那么这篇文章看起来很有希望。这是在JavaScript中抛出错误的页面。您想如何处理该复选框?请澄清您的问题please@Anzeo,我能说得更清楚些吗?我希望传递到构造函数中的HTMLInputElement
对象具有type
属性checkbox
,如果没有,我想做一些事情,比如引发异常,但我不知道是否可以引发异常,所以我要问这个问题?@FabianLauer我想将其作为三态复选框进行管理,这就是这个班的名字。@RyanCavanaugh,当我开始学习一些东西时,我采用进化的方法,阅读和提问,而不是随机尝试。试试看,找出如何点火。你想用这个复选框做什么?澄清你的问题please@Anzeo,我能说得更清楚些吗?我希望传递到构造函数中的HTMLInputElement
对象具有type
属性checkbox
,如果没有,我想做一些事情,比如引发异常,但我不知道是否可以引发异常,所以我要问这个问题?@FabianLauer我想将其作为三态复选框进行管理,这就是这个班的名字。@RyanCavanaugh,当我开始学习一些东西时,我采用进化的方法,阅读和提问,而不是随机尝试。试试看,看看怎么点火。我会扔一个东西,而不仅仅是一个string@MiMo:说得好。我要声明你可以扔任何你想要的东西。(甚至是西红柿?:)我会扔一个物体,而不仅仅是一个玩具string@MiMo:说得好。我要声明你可以扔任何你想要的东西。(甚至西红柿?:)