Javascript 如何在Typescript中将代码与类型分开?
我希望,而不是像这样混合代码和类型:Javascript 如何在Typescript中将代码与类型分开?,javascript,typescript,types,typescript-typings,transpiler,Javascript,Typescript,Types,Typescript Typings,Transpiler,我希望,而不是像这样混合代码和类型: const compar8 : boolean | error = (action: string, n: number) => { switch(action) { case 'greater': return n > 8; case 'less': return n < 8; case 'equal': ret
const compar8 : boolean | error = (action: string, n: number) => {
switch(action) {
case 'greater':
return n > 8;
case 'less':
return n < 8;
case 'equal':
return n === 8;
default:
throw new Error('Invalid action');
}
}
// code.js
const compar8 = (action, n) => {
switch(action) {
case 'greater':
return n > 8;
case 'less':
return n < 8;
case 'equal':
return n === 8;
default:
throw new Error('Invalid action');
}
}
// types.ts
compar8 : (string, number) => boolean | error
然后将其用于具有相同签名的所有函数:
// types.ts
compar8: myType
compar9: myType
...
etc
有办法吗?只需提前将其声明为类型:
type Compar8 = (compare: string, n: number) => boolean;
const compar8: Compar8 = (compare, n) => {
switch(action) {
case 'greater':
return n > 8;
case 'less':
return n < 8;
case 'equal':
return n === 8;
default:
throw new Error('Invalid action');
}
}
请注意,由于没有返回错误,因此不应将其包含在类型中。TypeScript中未记录可能引发的异常类型。只有在返回新错误之类的情况下,才会执行=>boolean | error。不要抛出。只需提前将其声明为类型:
type Compar8 = (compare: string, n: number) => boolean;
const compar8: Compar8 = (compare, n) => {
switch(action) {
case 'greater':
return n > 8;
case 'less':
return n < 8;
case 'equal':
return n === 8;
default:
throw new Error('Invalid action');
}
}
请注意,由于没有返回错误,因此不应将其包含在类型中。TypeScript中未记录可能引发的异常类型。只有在返回新错误之类的情况下,才会执行=>boolean | error。不抛出。typemytype=string,number=>boolean |错误将正常工作,是的,然后constcompar8:myType=。。。。看见注意:const compar8:boolean | error根本不对,因为该值是一个函数。type myType=string,number=>boolean | error可以正常工作,是的,那么const compar8:myType=。。。。看见注释const 8:BooLang-Error根本不正确,因为它是一个函数。@ EngyPur发热——如果您喜欢,类型可以由Type Ts导出,并由定义Labe8. .RealEngor有关返回和不投掷错误的代码导入,它认为在Typescript最好的做法是什么?我应该有类似于:myFun:success|u response | error 1 | error 2 | error 3或捕获不同的错误吗?@entropyfever如果你真的需要静态类型检查来区分不同的可能错误,你可以这样做,但我认为需要这样的东西有点奇怪。在几乎所有情况下,只要知道返回或抛出错误就足够了,如果需要@entropyfever,可以在运行时缩小精确的错误范围。如果您愿意,类型可以通过types.ts导出,并通过定义compar8的代码导入。@CertainPerformance关于返回和不抛出错误,Typescript最好的做法是什么?我应该有类似于:myFun:success|u response | error 1 | error 2 | error 3或捕获不同的错误吗?@entropyfever如果你真的需要静态类型检查来区分不同的可能错误,你可以这样做,但我认为需要这样的东西有点奇怪。在几乎所有情况下,只知道返回或抛出错误就足够了,如果需要,可以在运行时缩小精确的错误范围