Javascript: определение типа примитивов при передаче в качестве параметров - PullRequest
0 голосов
/ 31 мая 2018

Пробовал typeof item.type === '<type>' также instanceof никто не работает, как ожидалось.

Фон : я создаю генератор форм (используя VueJS).

Этоопределение формы:

formDesc: {
        inline: true,
        columns: 2,
        labels: 'top',
        disabled: false,
        fields: [
          {type: Array, prop: 'aprovalStatus', list: ['Pending', 'Rejected', 'Conditional', 'Approved'], label: 'Status', required: true},
          {type: String, prop: 'remarks', html: true, label: 'Remarks'},
          {type: Date, prop: 'approvalDate', label: 'Approval Date', format: 'DD-MM-YYYY'},
          {type: Number, prop: 'deposit', decimals: 2, label: 'Security Deposit'}
        ]
      }

У меня проблема с определением form.fields.<item>.type на стороне генератора формы.Параметр получен нормально.Чтобы обеспечить правильный тип ввода, мне нужно знать, что такое тип form item!

У меня есть следующий метод (из одного из поисков Google):

getType (elem) {
  return Object.prototype.toString.call(elem).slice(8, -1).toLowerCase()
}

, который какЯ читаю его, должен возвращать «число», «дату» и т. Д. Несмотря на то, что я прочитал, он также возвращает «функцию», как это делает typeof item.type.

Исходная статья

в коде генератора форм У меня есть методы для определения типа:

...
    check (item) {
      if (item && item.type) {
        console.log('getType = ', this.getType(item.type))
        return true
      } else {
        this.$message({message: 'Field item problem [' + !item ? 'Empty item' : 'no type prop for: ' + (item && item.label ? item.label : 'No label') + ']', type: 'warning'})
        return false
      }

    },

    isArray (item) {
      if (this.check(item) && this.getType(item.type) === 'array' &&
       item.hasOwnProperty('list')) {
        return true
      } else {
        return false
      }
    },
...

isArray, isNumber, is Decimal и т. Д. Используются для определения, какой компонент показывать для каждого элемента в formDesc.fields.

Мои другие попытки были item.type.constructor === Number

Любые ссылки или решения для этого очень ценятся.

1 Ответ

0 голосов
/ 31 мая 2018

Глупый я.Это работает item.type === Number (или соответствующий тип данных примитива)

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