使用 tcomb,我是不是遗漏了什么或者无法定义实例函数?
Using tcomb, am I missing something or is it not possible to define an instance function?
我正在尝试使用 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
instance 方法,它可以读取 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
内完成。如果是这样的话,我会感到震惊的是没有包括这样的基本功能......
来自README
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}`;
};
我正在尝试使用 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
instance 方法,它可以读取 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
内完成。如果是这样的话,我会感到震惊的是没有包括这样的基本功能......
来自README
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}`;
};