Skip to content

Commit f2b4265

Browse files
committed
feat: update has method type signature for better type inference
1 parent 8e472bf commit f2b4265

File tree

5 files changed

+15
-7
lines changed

5 files changed

+15
-7
lines changed

CHANGELOG.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,14 @@
22

33
# enum-plus Changelog
44

5+
## 3.1.7
6+
7+
2026-1-26
8+
9+
### Features
10+
11+
- ✨ Update `has` method type signature for better type inference.
12+
513
## 3.1.6
614

715
2025-11-26

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "enum-plus",
3-
"version": "3.1.6",
3+
"version": "3.1.7",
44
"description": "A drop-in replacement for native enum. Like native enum but much better!",
55
"keywords": [
66
"enum",

src/enum-collection.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -157,7 +157,7 @@ export class EnumCollectionClass<
157157
}
158158
}
159159

160-
has<KV>(keyOrValue?: KV): keyOrValue is Extract<KV, K | V> {
160+
has<KV>(keyOrValue?: KV): keyOrValue is Extract<KV, K | V> extends never ? typeof keyOrValue : Extract<KV, K | V> {
161161
return this.__items__.has(keyOrValue);
162162
}
163163

src/enum-items.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -221,7 +221,7 @@ export class EnumItemsArray<
221221
}
222222
}
223223

224-
has<KV>(keyOrValue?: KV): keyOrValue is Extract<KV, K | V> {
224+
has<KV>(keyOrValue?: KV): keyOrValue is Extract<KV, K | V> extends never ? typeof keyOrValue : Extract<KV, K | V> {
225225
return this.some((i) => i.value === (keyOrValue as unknown as V) || i.key === (keyOrValue as unknown as K));
226226
}
227227

@@ -569,7 +569,7 @@ export interface InheritableEnumItems<
569569
*
570570
* @returns {boolean} Whether the enumeration item exists | 枚举项是否存在
571571
*/
572-
has<KV>(keyOrValue?: KV): keyOrValue is Extract<KV, K | V>;
572+
has<KV>(keyOrValue?: KV): keyOrValue is Extract<KV, K | V> extends never ? typeof keyOrValue : Extract<KV, K | V>;
573573

574574
/**
575575
* **EN:** Find an enumeration item by key or value, or by custom meta fields

test/test-suites/enum-items.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -145,7 +145,7 @@ export function addEnumItemsTestSuite(engine: TestEngineBase<'jest' | 'playwrigh
145145
engine.expect(weekEnum.items.label('Sunday')).toBe(locales.Sunday);
146146
engine.expect(weekEnum.items.label(6)).toBe(locales.Saturday);
147147
engine.expect(weekEnum.items.label('Saturday')).toBe(locales.Saturday);
148-
engine.expect(weekEnum.items.label(7 as typeof weekEnum.valueType)).toBeUndefined();
148+
engine.expect(weekEnum.items.label(7)).toBeUndefined();
149149
}
150150
);
151151

@@ -158,7 +158,7 @@ export function addEnumItemsTestSuite(engine: TestEngineBase<'jest' | 'playwrigh
158158
({ weekEnum }) => {
159159
engine.expect(weekEnum.items.key(0)).toBe('Sunday');
160160
engine.expect(weekEnum.items.key(6)).toBe('Saturday');
161-
engine.expect(weekEnum.items.key(7 as typeof weekEnum.valueType)).toBeUndefined();
161+
engine.expect(weekEnum.items.key(7)).toBeUndefined();
162162
}
163163
);
164164

@@ -173,7 +173,7 @@ export function addEnumItemsTestSuite(engine: TestEngineBase<'jest' | 'playwrigh
173173
engine.expect(weekEnum.items.has('Sunday')).toBe(true);
174174
engine.expect(weekEnum.items.has(6)).toBe(true);
175175
engine.expect(weekEnum.items.has('Saturday')).toBe(true);
176-
engine.expect(weekEnum.items.has(7 as typeof weekEnum.valueType)).toBe(false);
176+
engine.expect(weekEnum.items.has(7)).toBe(false);
177177
}
178178
);
179179

0 commit comments

Comments
 (0)