Rename isLoggerError argument from unknown to arg, remove keyof Logger, use Parameters<ProxyHandler<Logger>[get]>[1] instead, and a comment explaining why @ts-expect-error is needed.

Signed-off-by: Hung-Han (Henry) Chen <chenhungh@gmail.com>
This commit is contained in:
Hung-Han (Henry) Chen committed 2021-07-14 09:32:30 +03:00
1 parent ffc69a6fdf
commit 146891e431
1 file changed
+7 -5
+7 -5
View File
@@ -50,14 +50,14 @@ const logger = winston.createLogger({
});
type Logger = ReturnType<typeof winston.createLogger>;
type LoggerKeys = keyof Logger;
type LoggerError = Logger["error"];
type LoggerGetProxyHandlerKeyType = Parameters<ProxyHandler<Logger>["get"]>[1];
/**
* Type guard to ensure unknown is logger.error function
* Type guard to ensure arg is logger.error function
*/
const isLoggerError = (unknown: unknown, key: LoggerKeys): unknown is LoggerError =>
typeof unknown === "function" && key === "error";
const isLoggerError = (arg: unknown, key: LoggerGetProxyHandlerKeyType): arg is LoggerError =>
typeof arg === "function" && key === "error";
/**
* Proxied version of logger
@@ -65,7 +65,9 @@ const isLoggerError = (unknown: unknown, key: LoggerKeys): unknown is LoggerErro
* Captures error message using Sentry.captureMessage(...params) when logger.error(...params)
*/
const proxiedLogger: Logger = new Proxy(logger, {
get(target: Logger, key: LoggerKeys) {
get(target, key) {
// @ts-expect-error both string and symbol can be used as an index type https://github.com/microsoft/TypeScript/issues/1863
// this can be removed after upgrade to a ts version with this fix https://github.com/microsoft/TypeScript/pull/44512 in
const property = target[key];
if (isLoggerError(property, key)) {