You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用transform属性定义Signal input时编译器报错,求分析原因

问题原因

你搞反了input函数的泛型参数顺序,同时转换器的类型和泛型声明不匹配:

  1. Angular input函数的泛型定义是 <最终Signal类型, 输入原始值类型>,你写的input<string, number>表示:
    • Signal最终要输出string类型
    • 输入的原始值是number类型
  2. 但你使用的numberAttribute转换器,作用是把字符串类型的输入值转换成数字类型,它的类型是(value: string | null) => number,和你泛型声明的「输入类型是number、输出类型是string」完全矛盾。
  3. 编译器报错的直接原因是:初始值0是number类型,但numberAttribute期望接收string类型的输入值,类型不匹配。

修正方案

你想要的应该是「输入可以是字符串形式的数字,经过转换器转成number类型,最终Signal输出number」,所以正确的写法有两种:

写法一:明确泛型参数(推荐)

foo = input<number, string>(0, {transform: numberAttribute });

这里泛型<number, string>表示:最终Signal是number类型,输入的原始值是string类型,和numberAttribute的转换逻辑匹配。

写法二:省略泛型,让编译器自动推断

foo = input(0, {transform: numberAttribute });

编译器会根据初始值0和numberAttribute的类型,自动推断出Signal的类型是number,输入值可以是string或number。

内容的提问来源于stack exchange,提问作者Matthieu Riegler

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 07:19:53