Skip to content

Commit 3c7162d

Browse files
committed
better type assertions
1 parent 4074347 commit 3c7162d

File tree

1 file changed

+9
-10
lines changed

1 file changed

+9
-10
lines changed

packages/compass-smoke-tests/src/build-info.ts

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -12,14 +12,13 @@ const SUPPORTED_CHANNELS = ['dev', 'beta', 'stable'] as const;
1212

1313
export type Channel = typeof SUPPORTED_CHANNELS[number];
1414

15-
function assertObjectHasKeys(
16-
obj: unknown,
17-
name: string,
18-
keys: readonly string[]
19-
) {
15+
function assertObjectHasKeys<
16+
Keys extends readonly string[],
17+
Obj extends Record<Keys[number], unknown>
18+
>(obj: unknown, name: string, keys: Keys): asserts obj is Obj {
2019
assert(
2120
typeof obj === 'object' && obj !== null,
22-
'Expected buildInfo to be an object'
21+
`Expected ${name} to be an object`
2322
);
2423

2524
for (const key of keys) {
@@ -39,10 +38,10 @@ export function assertCommonBuildInfo(
3938
): asserts buildInfo is CommonBuildInfo {
4039
assertObjectHasKeys(buildInfo, 'buildInfo', commonKeys);
4140
assert(
42-
SUPPORTED_CHANNELS.includes((buildInfo as { channel: Channel }).channel),
43-
`Expected ${
44-
(buildInfo as { channel: Channel }).channel
45-
} to be in ${SUPPORTED_CHANNELS.join(',')}`
41+
SUPPORTED_CHANNELS.includes(buildInfo.channel as Channel),
42+
`Expected ${JSON.stringify(
43+
buildInfo.channel
44+
)} to be in ${SUPPORTED_CHANNELS.join(',')}`
4645
);
4746
}
4847

0 commit comments

Comments
 (0)