使用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
实例方法,该方法可以读取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
内完成。如果是这样的话,我会感到震惊的是,这样的基本能力没有被包括在内。。。
从自述
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}`;
};
相关文章:
- 同一项怎么可能在一个实例中未定义,却在另一个实例上定义
- 如何使用javascript独立地为聚合物自定义元素的每个实例的lightdom设置样式
- 为什么我的Mongoose DB模式之一可能是“;强制转换为未定义的“;当它的实例被放置在第二个模式中时
- 允许在自定义事件上“查找使用实例”的 IDE
- 司 司长.使用 find() 时返回未定义的集合实例
- 需要帮助理解如何在javascript中定义静态类和可实例化类
- Fancybox的多个实例的自定义样式
- 使用自定义原型实例化JavaScript函数
- 在定义了构造函数之后,是否可以将实例属性添加到JavaScript原型中
- 实例变量变为未定义 - CoffeeScript
- 构造函数的“实例”是否有严格的定义
- 如何在猫鼬.js子文档数组中定义实例方法
- 不定义类的对象实例
- 触发不同实例设置的 jQuery 自定义事件
- 何时有时将对象类型定义为将实例绑定方法镜像为构造函数上的静态实用程序函数很有用
- 实例化自定义角度控制器
- 创建 JavaScript 自定义应用程序的新实例
- 窗口、文档、数学、未定义作为类实例化的参数传递
- 在主干模型中定义实例变量的正确方法是什么
- 使用tcomb,是我遗漏了什么,还是无法定义实例函数