openlang

satisfies는 헬퍼에는 불평하면서 실행 안 된 job에는 아무 말도 안 해요

jobs 테이블을 : Record<string, Job>에서 satisfies로 바꿨어요. when을 리터럴로 유지하려고요. 이제 tsc가 헬퍼 항목만 잡아내요. 일요일에 rotate-logs가 조용히 건너뛰어졌어요 ("nightly: 1 of 2 ran"). 같은 문제일까요, 아니면 두 개일까요? (잘 모르겠어요.)

function weekly(cmd: string, timeoutSec = 600) {
  return { cmd, when: 'weekly', timeoutSec };
}

export const jobs = {
  'prune-snapshots': weekly('btrfs subvolume delete /snap/old-*'),
  // ...
} satisfies Record<string, Job>;
// plan.ts
nightly: ['backup-db', 'rotate-logs'],

// run.ts
const job = (jobs as Record<string, Job>)[name];
if (!job) { log.debug(`no job called ${name}, skipping`); continue; }
영어에서 번역원문 보기

이어지는 대화 4

서로의 근거를 따라
  1. 고유 링크

    두 개인 것 같아요. 헬퍼가 when을 string으로 넓혀서 반환하니까 거기엔 as const를 쓰세요. 그리고 rotate-logs는 아마 그냥 jobs에 빠져 있을 거예요. 근데 캐스트랑 log.debug 때문에 가려지는 거고요. 거기선 대신 throw하세요.

    return { cmd, when: 'weekly' as const, timeoutSec };
    영어에서 번역원문 보기
  2. 고유 링크

    네. 캐스트는 tsc한테 "믿어 줘, 아무 문자열이나 키야"라고 말하는 거라서, rotate-logs가 빠져 있어도 에러가 안 나요. 그러다 undefined가 log.debug로 가고 job이 그냥 사라지는 거예요. plan 이름을 jobs의 키 타입으로 지정하고 캐스트는 빼세요.

    영어에서 번역원문 보기
  3. 고유 링크

    저는 정말 한 가지 문제로 보여요. 헬퍼가 when을 string으로 넓혀서 satisfies가 불평하는 거고, 아래쪽에서 느슨하게 타입이 잡힌 테이블도 같은 식으로 항목을 놓칠 수 있어요. 제일 쉬운 해결책은 헬퍼에 반환 타입을 주는 거예요:

    function weekly(cmd: string, timeoutSec = 600): Job {
      return { cmd, when: 'weekly', timeoutSec };
    }

    이걸 먼저 고치고, 그다음에 rotate-logs가 여전히 건너뛰어지는지 보세요.

    영어에서 번역원문 보기

같은 질문의 다른 갈래

  1. 읽기 전용 List<Int>는 스냅샷인가요?

    List<Int>는 읽기 전용 뷰예요. 스냅숏이 아니에요. 그 참조로 어떤 연산을 호출할 수 있는지 알려 줄 뿐, 뒤에 있는 컬렉션이 그대로 남는다고 약속하지는 않아요. val owned = mutableListOf(2, 4…

    답글 4최근 활동 kotlin
  2. private union case, smart constructor를 썼는데 remove 후에도 `Colors []`가 나와요?

    안녕하세요 여러분, 저는 작은 swatch 에디터를 만들고 있는데, 세 가지 case로 된 palette union이 있어요. 새로 편집을 시작하면 NotEntered, 의도적으로 비운 경우는 Empty, 그리고 Colors…

    답글 1최근 활동 fsharphaskell
  3. 측정 단위를 값싼 ID로 쓰기

    정수 ID에 단일 케이스 유니온 대신 측정 단위를 써 보고 있는데, 더 퍼지기 전에 다른 의견을 듣고 싶어요. CustomerId of int는 [<Struct>]를 붙이지 않으면 할당이 생기고, 쓸 때마다 생성자나 매치를…

    답글 1최근 활동 fsharp