2016-07-13 4 views
0

필자는 typescript에 새로운 글자이므로 그 글을 읽으려고 노력하고 있습니다.TypeScript에서 ISO 날짜 문자열을 처리하는 방법은 무엇입니까?

네트워크 요청은 ISO 날짜 문자열 형식의 필드가있는 JSON 객체를 반환합니다. 나는이 인터페이스의 형식 서명을 만들 때

data : Data = {when: "2016-07-13T18:46:01.933Z"} 

,이 실제로 ISO 타임 스탬프 또는 그냥 문자열을 사용할 필요가 않음을 지정하는 방법이 있습니까?

interface Data { 
    when: string 
} 

은 내가 정신적으로 도움이되지만 실제로 ISO 문자열의 유효성을 검사하지 않는 형태 별칭을 사용할 수 있습니다 발견했다. 내가 엔드 포인트에서 수신 된 정보를 확인할 수 있도록 이러한 타이프 라이터 주석에서 JS 유효성 검사를 생성 어쨌든이 있다면 비슷한 맥락에서
type iso = string 
interface Data { 
    when: iso 
} 

, 나는 그렇지 않으면 내 입력 응용 프로그램의 나머지는 쓸모가, 궁금합니다.

이것이 가능한 경우이 iso 문자열을 실제 Date 객체로 강제 변환 할 수 있다면 정말 멋지다.

필자는 타이프 스크립트를 처음 접했기 때문에 타이프 스크립트의 범위를 벗어나는 지 확실하지 않습니다.

답변

2

아니요. 자바 스크립트에는 타이프 스크립트의 인터페이스와 아무 관련이 없습니다. (인터페이스에 JS가 전혀 생성되지 않음). 또한 모든 유형 검사는 런타임이 아닌 "컴파일"또는 "투명성"시간에 수행됩니다.

당신은 수 있습니다합니까, json을 구문 분석 할 때 reviver 함수를 사용하는 것입니다. 예를 들어 :

const datePattern = /\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+([+-][0-2]\d:[0-5]\d|Z)/; 
let json = '{"when": "2016-07-13T18:46:01.933Z"}'; 

let result = JSON.parse(json, (key: any, value: any) => { 
    let isDate = typeof value == 'string' && datePattern.exec(value); 
    return isDate? new Date(value) : value; 
}); 

은 또한 당신은 키 Date 속성을 식별 할 수 있으며, 경우에 당신이 오류가 발생하거나 원하는 무엇이든 할 수있는 날짜 패턴과 일치하지 않습니다.

+0

[다른 질문이 있으시면] (http://stackoverflow.com/questions/38361504/how-to-handle-duck-typed-union-types-to-typescript-interfaces) – Chet

관련 문제