Подтвердить что ты не робот

Переменная Date работает, но функции на ней не

Я использую TypeScript 1.4 в проекте ASP.NET MVC 5.

У меня есть поле типа Date, и оно работает частично:

var dob: Date = result.dateOfBirth;
alert(dob);
var dobAsString = dob.toDateString();

В приведенном выше коде первые две строки работают, показывая значение как "1968-11-16T00: 00: 00", как и ожидалось. Но последняя строка не работает, ведь остальная часть кода ниже этой строки даже не выполняется - она ​​просто ломается, без сообщения об ошибке.

Это поведение сохраняется независимо от того, какую функцию Date я применяю в последней строке; Я мог бы также использовать dob.getFullYear() и т.д., И он будет терпеть неудачу каждый раз. Однако переменная имеет правильный тип и имеет правильное значение. Компилятор также находит функции Date, он компилируется без сбоев, но во время выполнения он терпит неудачу. Любые идеи?

4b9b3361

Ответ 1

Есть два аспекта этого. Во-первых, вам нужно проанализировать дату, так как теперь у вас есть строковое представление. Во-вторых, ваша переменная result не имеет информации о типе.

var result = {
    dateOfBirth: '1968-11-16T00:00:00'
};

// Error, cannot convert string to date
var a: Date = result.dateOfBirth;

// Okay
var b: Date = new Date(result.dateOfBirth);

var result2: any = result;

// Okay (not type information for result2)
var c: Date = result2.dateOfBirth;

Когда вы получите сообщение JSON, вы можете применить к нему интерфейс, который описывает, что отправил сервер, чтобы уловить проблемы в коде TypeScript, например, тот, который вы нашли. Это остановит проблему в будущем (хотя не проверяет, что входящий JSON соответствует интерфейсу)... пример ниже предполагает, что result имеет тип any.

interface NameYourResult {
    dateOfBirth: string;
}

var r: NameYourResult = result;