Как создать TypeScript наподобие строкового литерального типа Union в C # - PullRequest
0 голосов
/ 29 июня 2018

Я работаю в C # с некоторыми JSON и API. Мне интересно, как справиться с чем-то вроде этого.

Одним из значений JSON является строка, которая может принимать одно из следующих значений: «Last_Day», «Last_Week», «Last_Month».

В TypeScript я могу сделать это:

type DateSince = "Last_Day" | "Last_Week" | "Last_Month"

Тогда я получаю подсказку типа:

VS Code type hinting suggesting 3 possible values.

Если значением является что-то кроме этих 3 строк, я получаю красную ошибку линии загиба Мое значение все еще технически является строкой, и это то, что мне нужно использовать с запросами и ответами JSON API.

Мне еще предстоит найти отличный способ сделать это в C #. Возможно ли сделать это в C # с относительной легкостью?

Мое идеальное решение позволяет мне назначать пользовательский тип переменной вместо использования строки. Таким образом, мне не нужно запоминать возможные строковые значения.

Ответы [ 2 ]

0 голосов
/ 29 июня 2018

Как рекомендует @PatrickRoberts & @afrazier, лучший способ - использовать перечисления и Json.NET StringEnumConverter.

[JsonConverter(typeof(StringEnumConverter))]
public enum DateSince
{
    [EnumMember(Value = "LAST_DAY")]
    LastDay,
    [EnumMember(Value = "LAST_WEEK")]
    LastWeek,
    [EnumMember(Value = "LAST_MONTH")]
    LastMonth,
}

Настройка значений элементов перечисления

0 голосов
/ 29 июня 2018

В C # вы можете использовать Enums.

public enum DateSince
{
    Last_Day ,
    Last_Week,
    Last_Month
}

Использование:

var datesince = DateSince.Last_Day;

Подробнее о C # Enums

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...