0

tcomb目前正在尝试使用并失败,因为我无法理解如何定义实例函数。

假设我有一个类型:

t.struct({
  year: t.Integer,
  monthIndex: t.Integer,
  dayIndex: t.maybe(t.Integer),
  indexInMonth: t.maybe(t.Integer),
  title: t.Str,
  subtitle: t.maybe(t.Str),
  description: t.maybe(t.Str),
  iconIdentifier: t.maybe(t.Str),
})

到目前为止,一切都很好。

问题

现在假设我想添加一个可以读取并获取正确月份名称的month 实例方法:this

month() {
  return MonthsInYear[this.monthIndex]
},

如果我尝试将其添加到上面的内部,它只是看不到它。

const b1 = CalEvent({
  year: 2015,
  monthIndex:2,
  title: 'abc',
  description: 'abc'
})

console.log(b1.month)

如果我尝试做mixin任何事情,而不是 每次都定义函数,也会发生同样的情况。

我最初of在那里有语法,就像compare下面的函数一样......

t.struct({
  year: t.Integer,
  monthIndex: t.Integer,
  compare: t.func([CalEvent], CalEventComparisonResult).of(
    (toCompare) => CalEvent(compare(this,toCompare))
  ),
  dayIndex: t.maybe(t.Integer),
  indexInMonth: t.maybe(t.Integer),
  title: t.Str,
  subtitle: t.maybe(t.Str),
  description: t.maybe(t.Str),
  iconIdentifier: t.maybe(t.Str),
})

还是没有骰子。

我开始认为我想做的事情不能在tcomb. 如果是这样的话,我会感到震惊的是,没有包括这样的基本能力......

4

1 回答 1

2

自述文件

const Person = t.struct({
  name: t.String,              // required string
  surname: t.maybe(t.String),  // optional string
  age: Integer,                // required integer
  tags: t.list(t.String)       // a list of strings
}, 'Person');

// methods are defined as usual
Person.prototype.getFullName = function () {
  return `${this.name} ${this.surname}`;
};
于 2016-07-23T13:17:21.377 回答