Definitelytyped: [@types/react] createContext โ€“ 'defaultValue'์— ๋Œ€ํ•œ ์ธ์ˆ˜๊ฐ€ ์ œ๊ณต๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

์— ๋งŒ๋“  2019๋…„ 07์›” 20์ผ  ยท  4์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: DefinitelyTyped/DefinitelyTyped

์—ฌ๊ธฐ์„œ defaultValue ์ธ์ˆ˜๊ฐ€ ์„ ํƒ ์‚ฌํ•ญ์ด ์•„๋‹Œ ์ด์œ ๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ?

import * as React from 'react';
import * as firebase from 'firebase/app';

interface AuthProps {
  children: any;
}
interface AuthState {
  user: firebase.User | null;
}
interface AuthContextProps extends AuthState {
  updateUser(user: firebase.User | null): void;
}

export const AuthContext = React.createContext<AuthContextProps>(); // <-- ERROR HERE!

// export const AuthConsumer = AuthContext.Consumer;
export const AuthProvider = (props: AuthProps) => {
  const [state, setState] = React.useState<AuthState>({
    user: null,
  });

  const updateUser = (user: firebase.User | null) => setState({ user });

  return (
    <AuthContext.Provider
      value={{
        updateUser,
        user: state.user,
      }}
    >
      {props.children}
    </AuthContext.Provider>
  );
};

๋ฌธ์„œ URL: https://reactjs.org/docs/context.html#reactcreatecontext

defaultValue ์ธ์ˆ˜๋Š” ํŠธ๋ฆฌ์—์„œ ๊ตฌ์„ฑ ์š”์†Œ ์œ„์— ์ผ์น˜ํ•˜๋Š” ๊ณต๊ธ‰์ž๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ์—๋งŒ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

ํŠธ๋ฆฌ ์œ„์— ์ผ์น˜ํ•˜๋Š” ๊ณต๊ธ‰์ž๊ฐ€ ์žˆ์œผ๋ฏ€๋กœ ๊ธฐ๋ณธ๊ฐ’์„ ์„ค์ •ํ•˜์ง€ ์•Š๊ณ  ์ปจํ…์ŠคํŠธ๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์•„๋‹ˆ๋ฉด ์ œ๊ฐ€ ํ‹€๋ ธ์Šต๋‹ˆ๊นŒ?

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

๊ธฐ๋ณธ๊ฐ’์ด ์—†์œผ๋ฉด ๋‚ด typescript ์‹คํ–‰ ๋นŒ๋“œ๊ฐ€ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์„ ์„ ํƒ ์‚ฌํ•ญ์œผ๋กœ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๊นŒ?

๋ชจ๋“  4 ๋Œ“๊ธ€

์ง€๊ธˆ์€ ์ด ๋ฌธ์ œ๋ฅผ ๋‹ซ์Šต๋‹ˆ๋‹ค. ๋ˆ„๊ตฐ๊ฐ€ ์ด๊ฒƒ์ด ์‹ค์ œ ๋ฌธ์ œ๋ผ๊ณ  ์ƒ๊ฐํ•œ๋‹ค๋ฉด ์ž์œ ๋กญ๊ฒŒ ๊ธฐ์—ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ธฐ๋ณธ๊ฐ’์ด ์—†์œผ๋ฉด ๋‚ด typescript ์‹คํ–‰ ๋นŒ๋“œ๊ฐ€ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์„ ์„ ํƒ ์‚ฌํ•ญ์œผ๋กœ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๊นŒ?

๊ธฐ๋ณธ๊ฐ’ ์—†์ด ์ฝ”๋“œ๋ฅผ ์ปดํŒŒ์ผํ•˜๋ ค๋ฉด null ์ดˆ๊ธฐํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

export const AuthContext = React.createContext(null)

~ null ์†”๋ฃจ์…˜์ด ๋” ์ด์ƒ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ƒˆ๋กœ์šด ๋ฌธ์ œ๋ฅผ ์ œ๊ธฐํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.~

ํŽธ์ง‘: ์•„๋‹ˆ์š”, https://github.com/DefinitelyTyped/DefinitelyTyped/pull/34854 ์—์„œ ์ด์œ ๋ฅผ ์–ธ๊ธ‰ํ•ฉ๋‹ˆ๋‹ค. ์•„ ๊ธ€์Ž„.

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰