
β μλ°μ€ν¬λ¦½νΈμλ μλ νν?
μλ°μ€ν¬λ¦½νΈ(JS)
- JavaScriptλ λμ νμ μΈμ΄λΌμ, λ°°μ΄ μμ μ΄λ€ κ°μ΄ λ€μ΄μ€λ μ κ²½ μ°μ§ μμ.
- λ°°μ΄μ κΈΈμ΄λ μμ νμ μ΄ κ³ μ λλ κ°λ μ΄ μμ.
- μμλ 보μ₯λμ§λ§, κ° μμΉμ μλ―Έλ νμ μ κ°μ νκ±°λ ννν λ¬Έλ²μ΄ μμ
const arr = ["hello", 42, true]; // μ무 λ¬Έμ μμ
λ°λΌμ μλ°μ€ν¬λ¦½νΈλ ννμ΄ μ‘΄μ¬νμ§ μκ³ , λ°°μ΄λ§ μ‘΄μ¬νλ€.
μ무 νμ μ΄λ λ£μ μ μκ³ , μμλ₯Ό 보μ₯νλ©° κΈΈμ΄μ μ νμ΄ μλ€.
β νμ μ€ν¬λ¦½νΈμμ μ‘΄μ¬νλ νν, λ°°μ΄κ³Όμ μ°¨μ΄λ?
νμ μ€ν¬λ¦½νΈ(TS)
- TypeScriptλ μ μ νμ μμ€ν μ κ°μ§ μΈμ΄μ΄κΈ° λλ¬Έμ
- λ°°μ΄μ μ’ λ μ격νκ² λ€λ£¨κΈ° μν΄ **νν(Tuple)**μ΄λΌλ κ°λ μ λμ ν¨
λ°°μ΄
const arr: (string | number | boolean)[] = ["hi", 10, true];
λ€μν νμ μ΄ μ‘΄μ¬ν μ, stringμ΄κ±°λ numberκ±°λ booleanμΌλ‘ μ΄λ£¨μ΄μ§ [] λ°°μ΄
λ°°μ΄ κ΅¬μ±μλ€μ νμ μ΄ μ λμΈ νμ μμ νμ λμ΄ μμ΄μ, λ¬΄μ¨ νμ λ€λ‘ μ΄λ£¨μ΄μ Έ μλμ§λ νμ μ΄ κ°λ₯νλ
μ΄λ€ μμκ° μ΄λ€ νμ μΈμ§λ μ μ μλ€.
νν
const tuple: [string, number, boolean] = ["hi", 10, true];
λ€μν νμ μ΄ μ‘΄μ¬ν μ, κ° μμμ νμ μ΄ μΌμΉνλ ꡬμ±μλ€λ‘ μ΄λ£¨μ΄μ§ [] νν
κΈΈμ΄λ κ³ μ λμ΄ μλ€.
β μ¬μ© μμ
import { useState } from "react";
export default function useMutation(url: string) {
const [loading, setLoading] = useState(false);
const [data, setData] = useState<undefined | any>(undefined);
const [error, setError] = useState<undefined | any>(undefined);
function mutation(data: any) {}
return [mutation, { loading, data, error }];
}
ν΄λΉ μ½λμμλ useMutationμ return νμ μ λͺ μνμ§ μμλ€.
κ·Έλμ return λλ [mutation, { loading, data, error }]; μ΄ λΆλΆμ Function νμ κ³Ό Object νμ μΌλ‘ μ΄λ£¨μ΄μ§ λ°°μ΄μ΄λΌκ³ λ§ μΈμνλ€.
result: (Function | Object)[]
κ·Έλμ return λλ κ°μ λ°°μ΄λ‘ ꡬ쑰 λΆν΄ ν λΉμ μ¬μ©νλ©΄ μ΄λ€ κ°μ΄ μ΄λ€ νμ μΈμ§ νμ μ€ν¬λ¦½νΈλ μ μ μλ€.
λ°λΌμ ꡬ쑰 λΆν΄ ν λΉμ μ¬μ©νμ¬ μνλ κ°μ μ νν κ°μ Έμ€κΈ° μν΄μ
import { useState } from "react";
export default function useMutation(
url: string,
): [
(data: any) => void,
{ loading: boolean; data: undefined | any; error: undefined | any },
] {
const [loading, setLoading] = useState(false);
const [data, setData] = useState<undefined | any>(undefined);
const [error, setError] = useState<undefined | any>(undefined);
function mutation(data: any) {}
return [mutation, { loading, data, error }];
}
return νμ μ λͺ μνμ¬ ννλ‘ μ¬μ©νλ€.
result: [Function, Object]