小编Bag*_*ong的帖子

在类型定义文件中定义类型与在普通类型文件中定义类型的优点

对于应用程序代码,是否建议将 Redux 存储类型放在state-slice.d.ts文件中?

\n

我继承了一个代码库,其中所有核心类型都放置在.d.ts定义文件中,但这与我\xe2\x80\x99ve 理解定义文件的作用的方式相反。

\n

我的理解是,定义文件适用于您\xe2\x80\x99编写库时(这是作者集中接口来定义我们向消费者公开的库的API的一个方便的地方),但不适合对于应用程序代码,因为数据可能会快速变化。

\n

也就是说,我\xe2\x80\x99无法对.d.ts文件本身提出一个很好的论据 - 从功能的角度来看,我不\xe2\x80\x99t看到引用类型的区别

\n
declare namespace Domain {\n  interface State {\n    // ...\n  }\n} \n
Run Code Online (Sandbox Code Playgroud)\n

从定义文件中,或从具有以下内容的文件中显式导入文件

\n
export interface ReduxState {}\n
Run Code Online (Sandbox Code Playgroud)\n

添加更多上下文,因为这是一个有点特殊的问题 - I\xe2\x80\x99m 目前正在开发一个新项目,该项目需要从我继承的现有代码库中共享这些核心类型,并且 I\xe2\x80\ x99m 尝试将这些类型移至单独的包中。

\n

不幸的是,我\xe2\x80\x99在导入和导出这些类型时遇到了问题 - 似乎我必须(注意 s export

\n
/* package A */\nexport declare namespace StateA { }\n\n/* package B */\nimport { StateA } from 'packageA/StateA' \n\nconst stateA: StateA = {};\n
Run Code Online (Sandbox Code Playgroud)\n

而不是 TypeScript 自动拾取它。

\n …

types typescript redux react-redux

7
推荐指数
1
解决办法
1102
查看次数

当函数参数类型不匹配时,为什么 TypeScript 不会抛出错误?

这是一个非常基本的示例来演示我的意思:

type Payload = {
    id: number;
}

type GreatPayload = {
    id: number;
    surprise: 4;
}

type Action = (payload: Payload) => void;

const action: Action = payload => null;

const payload: GreatPayload = {
    id: 1,
    surprise: 4,
};

action({ id: 1, surprise: 4 }); // <== as expected, this errors out because `surprise` is not present in `Payload`

action(payload); // <== my question is, why does this not throw an error?
Run Code Online (Sandbox Code Playgroud)

(以及可编辑示例的TypeScript 游乐场链接。)

action(payload)当 …

javascript typescript

6
推荐指数
1
解决办法
454
查看次数

?: 和 | 有什么区别?在 TypeScript 中未定义?

我想知道,两者之间是否存在差异(实际或最佳实践明智)

interface Fruit {
  cost?: number;
}
Run Code Online (Sandbox Code Playgroud)

interface Fruit {
  cost: number | undefined;
}
Run Code Online (Sandbox Code Playgroud)

如果在行为方面存在实际差异,那是什么?

如果没有,为什么会更喜欢| undefined?:(反之亦然)?

有点困惑,因为我两者都看过,并且不确定是否真的有真正的理由让一个人更喜欢另一个,或者它是否只是归结为偏好。

谢谢!

optional-parameters optional typescript

4
推荐指数
1
解决办法
33
查看次数