Skip to content

Latest commit

 

History

History
76 lines (58 loc) · 1.38 KB

typedef.md

File metadata and controls

76 lines (58 loc) · 1.38 KB

typedef

typedef는 Type을 alias로 사용할 수 있게 해줍니다.

typedef IntList = List<int>;
IntList il = [1,2,3];

함수를 정의할 때에도 사용이 가능합니다.

typedef Compare<T> = int Function(T a, T b);

int sort(int a, int b) => a - b;

void main() {
  assert(sort is Compare<int>); // True!
}

Example

저는 Record를 포함하는 Map 타입을 alias로 사용하고 싶어서 enum과 typedef를 사용해 보았습니다.

AS-IS

class ErrorInfo {
  final String message;
  final String symbol;

  ErrorInfo({required this.message, required this.symbol});
}

final errorInfos = {
  'NetworkError': ErrorInfo(
    symbol: '📡',
    message: '네트워크 연결이 불안정합니다.',
  ),
  'default': ErrorInfo(
    symbol: '🙏',
    message: '''일시적인 에러가 발생하였습니다.
    잠시 후 다시 시도해주세요.''',
  ),
};

TO-BE

typedef ErrorInfo = ({
  String message,
  String symbol,
});

enum ErrorType {
  network,
  otherwise,
}

typedef ErrorInfoMap = Map<ErrorType, ErrorInfo>;

final ErrorInfoMap errorInfos = {
  ErrorType.network: (
    symbol: '📡',
    message: '네트워크 연결이 불안정합니다.',
  ),
  ErrorType.otherwise: (
    symbol: '🙏',
    message: '''일시적인 에러가 발생하였습니다.
    잠시 후 다시 시도해주세요.''',
  ),
};