我在GJS GObject overrides中看到大多数类型的定义都与Javascript类型相对应,但是我应该如何为标准的字符串数组定义属性?我遇到的一些选择:
答案 0 :(得分:3)
目前无法实现。订阅https://bugzilla.gnome.org/show_bug.cgi?id=727787以便在有进展时收到通知。
我过去成功使用了第二个选项(类型为as
的GVariant)。 GList选项不起作用,因为GJS不关注GList中存储的值的类型。我不确定的第三种选择。
这是一个显示如何使用GVariant选项的最小示例:
const GObject = imports.gi.GObject;
const GLib = imports.gi.GLib;
const MyClass = GObject.registerClass({
Properties: {
'prop': GObject.param_spec_variant('prop', 'Prop', 'Prop',
new GLib.VariantType('as'), null,
GObject.ParamFlags.READABLE),
},
}, class MyClass extends GObject.Object {
get prop() {
return new GLib.Variant('as', ['one', 'two']);
}
});
print(new MyClass().prop.deep_unpack());
(如果您没有使用新的类语法,它仍然以与旧Lang.Class
类似的方式工作。)