includes
const actions = [
"CREATE",
"READ",
"UPDATE",
"DELETE"
] as const;
// readonly ["CREATE", "READ", "UPDATE", "DELETE"]
const execute = (action: string) => {
if (actions.includes(action)) {
// π₯ ERROR
}
};
Argument of type
'string'
is not assignable to parameter of type'CREATE' | 'READ' | 'UPDATE' | 'DELETE'
. = Error 2345
interface Array<T> {
includes(searchElement: T, fromIndex?: number): boolean;
}
interface ReadonlyArray<T> {
includes(searchElement: T, fromIndex?: number): boolean;
}
Array<T>
μ ReadonlyArray<T>
μ μ μΈμ μ΄ν΄λ³΄λ©΄ μ°ΎμΌλ €λ μμ(searchElement
)μ νμ
κ³Ό λ°°μ΄μ΄ λ΄κ³ μλ κ°μ νμ
μ΄ λμΌν΄μΌ νλ€.
μ΄λ string
μ T
('CREATE' | 'READ' | 'UPDATE' | 'DELETE'
)λ³΄λ€ ν¨μ¬ λμ νμ
μ΄λ―λ‘ νμ
μΊμ€ν
μ μ΄μ©ν΄ νμ
μ μ’νμ£Όμ΄μΌ νλ€.
function includes<T extends U, U>(
array: ReadonlyArray<T>,
element: U
): element is T {
return array.includes(element as T);
}
μ΅μ’
μ μΌλ‘λ T
κ° U
λ₯Ό νμ₯(extends)νλ μ§ κ²μ¦νλ©°, μ΄λ U
κ° T
μ μμ μ§ν©(superset) νΉμ T
κ° U
μ νμ μ§ν©(subset)μμ 보μ₯ ν μ μκ² λλ€.
Last updated