Skip to content

Commit ec3e6fe

Browse files
committed
types(shared): improve capitalize types
1 parent 2eb3322 commit ec3e6fe

File tree

1 file changed

+10
-8
lines changed

1 file changed

+10
-8
lines changed

packages/shared/src/index.ts

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,8 @@ export const isMap = (val: unknown): val is Map<any, any> =>
5252
export const isSet = (val: unknown): val is Set<any> =>
5353
toTypeString(val) === '[object Set]'
5454

55-
export const isDate = (val: unknown): val is Date => toTypeString(val) === '[object Date]'
55+
export const isDate = (val: unknown): val is Date =>
56+
toTypeString(val) === '[object Date]'
5657
export const isFunction = (val: unknown): val is Function =>
5758
typeof val === 'function'
5859
export const isString = (val: unknown): val is string => typeof val === 'string'
@@ -99,7 +100,7 @@ const cacheStringFunction = <T extends (str: string) => string>(fn: T): T => {
99100
return ((str: string) => {
100101
const hit = cache[str]
101102
return hit || (cache[str] = fn(str))
102-
}) as any
103+
}) as T
103104
}
104105

105106
const camelizeRE = /-(\w)/g
@@ -121,16 +122,17 @@ export const hyphenate = cacheStringFunction((str: string) =>
121122
/**
122123
* @private
123124
*/
124-
export const capitalize = cacheStringFunction(
125-
(str: string) => str.charAt(0).toUpperCase() + str.slice(1)
126-
)
125+
export const capitalize = cacheStringFunction(<T extends string>(str: T) => {
126+
return (str.charAt(0).toUpperCase() + str.slice(1)) as Capitalize<T>
127+
})
127128

128129
/**
129130
* @private
130131
*/
131-
export const toHandlerKey = cacheStringFunction((str: string) =>
132-
str ? `on${capitalize(str)}` : ``
133-
)
132+
export const toHandlerKey = cacheStringFunction(<T extends string>(str: T) => {
133+
const s = str ? `on${capitalize(str)}` : ``
134+
return s as T extends '' ? '' : `on${Capitalize<T>}`
135+
})
134136

135137
// compare whether a value has changed, accounting for NaN.
136138
export const hasChanged = (value: any, oldValue: any): boolean =>

0 commit comments

Comments
 (0)