首页 > 解决方案 > 在装饰器中使用泛型类型

问题描述

我想为我的 NestJs 应用程序创建异常过滤器。我基本上从这里拿了代码

https://docs.nestjs.com/exception-filters#exception-filters-1

并创建了我自己的版本

import { ExceptionFilter, Catch } from '@nestjs/common';

@Catch(TException)
export class BaseExceptionFilter<TException extends Error> implements ExceptionFilter {
  catch(exception: TException): void {
    // ...
  }
}

此异常过滤器应运行基本逻辑并采用 类型的泛型ErrorCatch装饰器无法处理该泛型类型

找不到名称“TException”。您的意思是“DOMException”吗?ts(2552)

是否可以在类定义之外使用该泛型?因为基本上我可以传入任何我想要的类型

@Catch(String)
export class BaseExceptionFilter implements ExceptionFilter {
  catch(exception: string): void {
    // ...
  }
}

但我认为它必须在运行时之前存在......有什么想法可以解决这个问题吗?

标签: typescriptnestjs

解决方案


推荐阅读