Skip to content

Commit 63d5081

Browse files
committed
refactor: improve type safety by replacing any with proper types
Replace 'any' with more specific types for better type safety: - objects.ts: Use Record<PropertyKey, unknown> for property access - result.ts: Use 'unknown' for type assertions in Result methods
1 parent 244f790 commit 63d5081

File tree

2 files changed

+10
-7
lines changed

2 files changed

+10
-7
lines changed

src/objects.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,9 @@ function recursiveFreeze<T>(value_: T): T {
5555
// Queue unfrozen object properties for processing.
5656
const keys = Reflect.ownKeys(obj)
5757
for (let i = 0, { length } = keys; i < length; i += 1) {
58-
const propValue: unknown = (obj as any)[keys[i]!]
58+
const propValue: unknown = (obj as Record<PropertyKey, unknown>)[
59+
keys[i]!
60+
]
5961
if (
6062
propValue !== null &&
6163
(typeof propValue === 'object' || typeof propValue === 'function') &&

src/result.ts

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ export class Ok<T> {
7272
* Transform the error (no-op for Ok).
7373
*/
7474
mapErr<F>(_fn: (_error: never) => F): Result<T, F> {
75-
return this as any
75+
return this as unknown as Result<T, F>
7676
}
7777

7878
/**
@@ -119,7 +119,7 @@ export class Err<E = Error> {
119119
* Chain another result-returning operation (no-op for Err).
120120
*/
121121
andThen<U, F>(_fn: (_value: never) => Result<U, F>): Result<U, E | F> {
122-
return this as any
122+
return this as unknown as Result<U, E | F>
123123
}
124124

125125
/**
@@ -140,7 +140,7 @@ export class Err<E = Error> {
140140
* Transform the success value (no-op for Err).
141141
*/
142142
map<U>(_fn: (_value: never) => U): Result<U, E> {
143-
return this as any
143+
return this as unknown as Result<U, E>
144144
}
145145

146146
/**
@@ -203,7 +203,7 @@ export const ResultUtils = {
203203
/**
204204
* Convert all Results to Ok values or return first error.
205205
*/
206-
all<T extends readonly Result<any, any>[]>(
206+
all<T extends readonly Result<unknown, unknown>[]>(
207207
results: T,
208208
): Result<
209209
{ [K in keyof T]: T[K] extends Result<infer U, any> ? U : never },
@@ -213,11 +213,12 @@ export const ResultUtils = {
213213
[K in keyof T]: T[K] extends Result<infer U, any> ? U : never
214214
}
215215
type ExtractedValue = T[number] extends Result<infer U, any> ? U : never
216+
type ExtractedError = T[number] extends Result<any, infer E> ? E : never
216217
const values: ExtractedValue[] = []
217218
for (let i = 0; i < results.length; i++) {
218219
const result = results[i]!
219220
if (result.isErr()) {
220-
return result as any
221+
return result as unknown as Result<ExtractedValues, ExtractedError>
221222
}
222223
values.push((result as Ok<ExtractedValue>).value)
223224
}
@@ -227,7 +228,7 @@ export const ResultUtils = {
227228
/**
228229
* Return the first Ok result or the last error.
229230
*/
230-
any<T extends readonly Result<any, any>[]>(results: T): T[number] {
231+
any<T extends readonly Result<unknown, unknown>[]>(results: T): T[number] {
231232
let lastError: Result<unknown, unknown> | null = null
232233
for (const result of results) {
233234
if (result.isOk()) {

0 commit comments

Comments
 (0)