我试图理解为什么当对象类型与字符串类型相交时,TypeScript 没有在错误消息中明确显示 never 类型。这是我的代码:type Test1 = { b: numb...
我试图理解为什么当对象类型与字符串类型相交时,TypeScript 没有在错误消息中明确显示 never 类型。这是我的代码:
type Test1 = {
b: number;
c: string;
} & string;
// Type '{ b: number; c: string; }' is not assignable to type 'Test1'.
// Type '{ b: number; c: string; }' is not assignable to type 'string'.
let test1: Test1 = {
b: 1,
c: 'c',
}
// Type 'string' is not assignable to type 'Test1'.
// Type 'string' is not assignable to type '{ b: number; c: string; }'.
let test1: Test1 = 'test1'
在上面的代码中,Test1 被定义为对象类型和字符串的交集。根据我的理解,这应该导致 never 类型,因为没有值可以同时是具有属性的对象 b
和 c
字符串。
Type '{ b: number; c: string; }' is not assignable to type 'Test1'.
Type '{ b: number; c: string; }' is not assignable to type 'string'.
Type 'string' is not assignable to type 'Test1'.
Type 'string' is not assignable to type '{ b: number; c: string; }'.
据我了解,这些应该表明 Test1 实际上是 never 类型,但 TypeScript 似乎没有在错误消息中提到 never。这是 TypeScript 中的错误,还是我在 TypeScript 处理此类交集的方式上遗漏了什么?
如能就此行为做出任何澄清,我们将不胜感激。谢谢!
我试图将项目从 Angular 14 更新到 18。当然,我是逐步从 14 更新到 15。然后从 15 更新到 16,再从 16 更新到 17,目前从 17 更新到 18。当从 16 更新到 17 时,我……
我正在尝试将项目从 Angular 14 更新到 18。
当然,我是在 14 岁到 15 岁之间逐渐练习的,然后从 15 岁到 16 岁,再从 16 岁到 17 岁,现在从 17 岁到 18 岁。
从 16 更新到 17 时出现此错误
Error: node_modules/@ngrx/effects/src/effect_creator.d.ts:42:101 - error TS2313: Type parameter 'OT' has a circular constraint.
42 export declare function createEffect<C extends EffectConfig, DT extends DispatchType<C>, OT extends ObservableType<DT, OT>, R extends EffectResult<OT>>(source: () => R & ConditionallyDisallowActionCr
eator<DT, R>, config?: Partial<C>): R & CreateEffectMetadata;
经搜索,发现需要安装Typescript 5.3.3版本才能修复此错误。
我修复了 Angular 17 版中的这个错误,一切正常
切换到 Angular 18 时,错误重复出现
但是 Angular 18 有一个问题,你需要有一个 Typescript 版本 >=5.4.0 <5.5.0。
如果有人能帮助我,我会很高兴,提前谢谢
我尝试安装不同版本的 Typescript,但无法修复错误