我想使用TypeScript创建一个数据库模式。这很简单,但我不能,也不知道如何定义密钥生成器。例如,在“用户指南”中,这样的代码片段(使用JavaScript):
var schema = {
...
indexes: [
{
name: 'name', // index for case in-sensitive sorting
generator: function(obj) {
var name = obj.first + ' ' + obj.last;
return name.toLowerCase();
}
}
],我可以使用库ydn-db.d.ts(downloaded ydn.db-1.0.ts(从YDN-DB服务器下载)或从DefinitelyTyped定义这个生成器吗?
例如,我编写了这个ts文件:
/// <reference path="typings/ydn-db/ydn-db.d.ts" />
module YdnDbTest
{
module DatabaseHelper
{
interface Place
{
Name: string;
Location: string;
}
var AppDbSchema: DatabaseSchemaJson =
{
stores:
[
{
name: "AppDbStore",
keyPath: "Name",
indexes:
[
{
name: "idxLocation",
keyPath: "Location",
unique: true,
}
]
}
]
}
}和我想要的位置写了一个发电机。我想写这样的东西:
...
indexes:
[
{
name: "idxLocation",
generator: (record: Place): string =>
{ return record.Location.toLowerCase() },
unique: true,
}
]
...就像我为主键(名称)编写生成器一样,但这可能是不可能的。
发布于 2016-02-02 14:51:54
是的,这可以使用ydn-db.d.ts(from DefinitelyTyped解决)。库ydn.db-1.0.ts中断(重复定义,而不是布尔布尔,等等)。在库ydn-db.d.ts(from DefinitelyTyped中,生成器被忽略了。使用IndexSchemaJson接口的扩展,我可以编写这段代码,包括生成器:
/// <reference path="typings/ydn-db/ydn-db.d.ts" />
module YdnDbTest
{
module DatabaseHelper
{
interface Place
{
Name: string;
Location: string;
}
interface IndexSchemaJsonB extends IndexSchemaJson
{
generator?: (row: any) => any;
}
var AppDatabaseSchema: DatabaseSchemaJson =
{
stores:
[
{
name: "StoreA",
keyPath: "Name",
indexes:
[
<IndexSchemaJsonB>
{
name: "idxLocation",
keyPath: "Location",
generator: (row: Place): string =>
{ return row.Location.toLocaleUpperCase(); }
}
]
}
]
}
}}
https://stackoverflow.com/questions/35147359
复制相似问题