Skip to content

弃用成员

@deprecated 注解会把属性、回调或函数标记为已弃用。 只要从声明该成员的组件之外访问该成员,编译器就会发出警告,并指向替代方案。 这让组件能够演进其公共 API,同时为用户提供迁移路径,而不是硬性破坏。

在声明前加上 @deprecated,后面跟括号中的消息:

in-out property <int> new-prop;
@deprecated("Please use 'new-prop' instead") in-out property <int> old-prop <=> new-prop;
slint

随后访问 old-prop 会发出警告:The property 'old-prop' has been deprecated: Please use 'new-prop' instead。

请写上你希望用户读到的消息。声明本身不会推导出任何内容,因此要说明什么取代了该成员, 即使它通过 <=> 别名指向其替代者也要如此。

当没有任何东西取代该成员时,把消息留空:

@deprecated("") in-out property <int> going-away;
slint

此时警告只会显示 The property 'going-away' has been deprecated。

component Inner {
in-out property <int> new-prop;
@deprecated("Please use 'new-prop' instead") in-out property <int> old-prop <=> new-prop;
// No warning: accesses within the declaring component are fine.
in-out property <int> internal: old-prop;
}
export component Example {
inner := Inner {
new-prop: 42;
}
// Warning: The property 'old-prop' has been deprecated: Please use 'new-prop' instead
property <int> value: inner.old-prop;
}
slint
  • 消息是必需的。 写 @deprecated("") 可在不给出替代建议的情况下弃用。
  • 消息必须是纯字符串字面量,不能包含任何 \{} 表达式。
  • 访问已弃用的成员只会产生警告,绝不会是错误,因此现有代码仍可继续编译。
  • 从声明该成员的组件内部访问不会发出警告,因为该组件仍然需要实现该成员。

关于规范性规则,参见语言规范中的 弃用。


© 2026 SixtyFPS GmbH