반응형
TypeScript 선언(*.d.ts 파일)으로 JSON 파일 가져오기
나는 글로벌 유형을 선언하고 특정 문자열 구문 목록에 엄격한 선언 파일을 작성하고 있다. 이러한 문자열 구문은 실제로 JSON 파일에 있는 개체의 속성 키의 일부입니다.
두 가지 질문:
- JSON 파일을 선언 파일로 가져와서 와 같은 기본 기능을 사용하여 처리할 수 있습니까?
- 하지만, 나는 TS에서 유형을 정의하기 위해 문자열의 JS 배열을 사용하는 것이 가능한지 궁금하다?
코드의 예를 하나 들어보겠습니다.
다음과 같은 이름의 JSON 파일이 있다고 가정해 보겠습니다:
{
"someList": {
"#key1": {"a": 1, "b": 2},
"#key2": "some value",
"#key3": 1234
}
}
이제 다음 선언 파일을 생성합니다:
import data from './data.json';
declare global {
type AllowedKeys = Object(data.someList).map(key => key.substr(1));
}
기본적으로 다음과 같이 정의할 유형(JSON 파일이 동적으로 변경됨)이 필요합니다:
type AllowedKeys = "key1" | "key2" | "key3";
어떤 도움이나 최소한의 안내라도 감사할 것이다.
: 이제 템플릿 문자열 리터럴을 사용하여 다음과 같이 주어진 문자에서 시작하는 하위 문자열을 유추할 수 있습니다:
import data from "./data.json";
export type AllowedKeys = keyof typeof data["someList"] extends `#${infer K extends string}` ? K : never;
// This is equivalent to
// export type AllowedKeys = "key1" | "key2" | "key3"
당신은 json-file의 데이터에서 유형을 추론하도록 타이프스크립트를 만들 수 있다.
import data from "./data.json";
export type AllowedKeys = keyof typeof data["someList"];
// This is equivalent to
// export type AllowedKeys = "#key1" | "#key2" | "#key3"
결과 파일은 다음과 같습니다:
import data from "./data.json";
export declare type AllowedKeys = keyof typeof data["someList"];
내가 알기로는 타이프스크립트에서 문자열 리터럴을 조작할 방법이 없다(즉, 를 제거한다).
다음 Github 문제를 참조하십시오:
- https://github.com/microsoft/TypeScript/issues/12940
- https://github.com/microsoft/TypeScript/issues/12754
반응형
'개발하자' 카테고리의 다른 글
VS 코드에서 커널 - 주피터를 시작하지 못했습니다 (0) | 2023.01.09 |
---|---|
주피터 노트북에서 대시 실행 문제 (0) | 2023.01.08 |
Jupyter Lab에서 찾고 교체하는 방법 (0) | 2023.01.07 |
VSCode에서 python3 코드를 실행하는 방법? /bin/sh: 1: python: 찾을 수 없음 (0) | 2023.01.07 |
빌드\app\outputs\apk\app.apk 설치 시 플러터가 고착됨 (0) | 2023.01.06 |