Как правильно установить значение типа AlertInput в Ionic? - PullRequest
0 голосов
/ 28 июня 2019

Я использую Ionic для своего последнего проекта, но я борюсь с Alert.

Я создал один таким образом:

const alert = await this.alertController.create({
  header: 'Ordering options',
  inputs: this.order.options.map(option => ({
    name: option.name,
    type: "radio",
    label: option.readable,
    value: option.name,
    checked: (option.name === this.order.selected),
    handler: () => {
      this.order.selected = option.name;
      this.order.apply();
      alert.dismiss();
    },
}))

Хотя код работает, часть ionic lab выводом компиляции является следующее предупреждение:

[ng] ERROR in src/app/overview/order/order-mobile.component.ts(24,7): error TS2322: Type '{ name: any; type: string; label: any; value: any; checked: boolean; handler: () => void; }[]' is not assignable to type 'AlertInput[]'.
[ng]   Type '{ name: any; type: string; label: any; value: any; checked: boolean; handler: () => void; }' is not assignable to type 'AlertInput'.
[ng]     Types of property 'type' are incompatible.
[ng]       Type 'string' is not assignable to type '"number" | "password" | "time" | "text" | "date" | "email" | "search" | "tel" | "url" | "checkbox" | "radio"'.

В чем дело?

Спасибо за помощь.

1 Ответ

1 голос
/ 28 июня 2019

Если вы используете машинописный текст 3.5.1, вы можете перейти "radio" as const, в противном случае "radio" as "radio" будет работать

В качестве альтернативы вы также можете сделать это ...

inputs: this.order.options.map((option): AlertInput => ({

Проблемаздесь машинопись всегда предполагает, что она является строкой, а не строковым литералом, если не предоставлено больше информации.

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