小编Ben*_*arp的帖子

防止不适当的导入并在 Typescript 中强制执行项目层次结构

在 TS 项目中,我希望阻止以下内容:

  • 来自文件夹的文件 common 从文件夹导入 projectA
  • 来自文件夹 projectB 的文件从文件夹导入 projectA

我希望允许以下内容:

  • 从文件夹 projectA 导入的文件common

我知道参考文献。但是,据我了解,它们需要构建用于类型检查(如果进行了这种分离,则必须先构建以创建 d.ts 文件),我宁愿避免这种情况。

我有哪些选择?是否可以简单地通过每个项目/文件夹的单独 tsconfig 文件来实现?

dependency-management typescript typescript3.0

14
推荐指数
2
解决办法
3004
查看次数

同一窗口事件的多个侦听器如何影响性能?

在 Web 项目中,我对相同的窗口事件使用多个侦听器。

window.addevntlistener("resize", callback)
window.addevntlistener("hasChange", callback)
Run Code Online (Sandbox Code Playgroud)

我假设在窗口上添加多个事件侦听器对性能的影响可以忽略不计。是这样吗,还是我应该只听一次,然后为需要通知的各个单元添加我自己的 javascript 订阅解决方案?

调整大小侦听器可以由呈现在列表中的基本 UI 元素使用,因此可以添加数百个侦听器。

编辑: 我知道添加太多事件侦听器会影响性能吗?. 但是,它指的是元素单击事件。在这种情况下,多个对象有多个侦听器。在我的例子中,同一个对象有多个侦听器,还有一个特殊的对象——窗口。

javascript browser

10
推荐指数
1
解决办法
2054
查看次数

为什么 Typescript 将 `object.hasOwnProperty("key")` 视为与 object` 中的 `"key" 本质上不同

declare const action: { total: number } | { };
declare const defavlt: 200;

const total = (action.hasOwnProperty("total")) ? action.total : defavlt;

Run Code Online (Sandbox Code Playgroud)

导致以下 TS 错误action.total

Property 'total' does not exist on type '{ type: "NEW_CONVERSATION_LIST" | "UPDATE_CONVERSATION_LIST_ADD_BOTTOM" | "UPDATE_CONVERSATION_LIST_ADD_TOP"; list: IDRArray<RestConversationMember>; total: number | undefined; } | ... 13 more ... | { ...; }'.
  Property 'total' does not exist on type '{ type: "UPDATE_URL_STATE"; updateObj: IMessagingUrlState; }'.ts(2339)
Run Code Online (Sandbox Code Playgroud)

然而

const total = ("total" in action) ? action.total : …
Run Code Online (Sandbox Code Playgroud)

typescript

9
推荐指数
1
解决办法
1846
查看次数

在 Typescript 中使用泛型类型加宽类型

在某些情况下,我想扩大按字面转换的对象的类型(使用“as const”),因此它的属性将被推断为字符串或数字,而不是字面意义。

想象一下我有以下类型

const obj = [
   {
      type:"student", 
      name:"Yossi"
   }, 
   {
      type: "Teacher", 
      name: "Lili"
   }
] as const

type Person = typeof obj [number]
Run Code Online (Sandbox Code Playgroud)

我希望从字面上推断 obj 的类型,但要更广泛地推断 Person,因此它的类型和名称是字符串。是否有一个泛型可以允许以下内容:

type Person = Widen<typeof obj [number]>
Run Code Online (Sandbox Code Playgroud)

typescript

8
推荐指数
1
解决办法
397
查看次数

如何从JavaScript中的字符串中获取所有数字?

假设我有一个输入字段,想要解析提交的字符串中的所有数字.例如,它可能是:

Hi I'm 12 years old.
Run Code Online (Sandbox Code Playgroud)

如何在没有共同模式的情况下解析所有数字?

我试过了:

x.match(/\d+/)
Run Code Online (Sandbox Code Playgroud)

但它只能抓住12并且不会越过下一个空间,如果用户输入更多带有空格的数字,这就有问题.

javascript regex integer numbers

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

因为当有类型定义时 const 被忽略

我想将对象限制为某种类型,但也想将其转换为“const”,以便可以按字面意思键入某些属性。但是,当我将“as const”与下面的代码中的类型定义一起使用时,推断的类型不是文字——“as const”被忽略。

interface IFilterBase {
   type: string
   ...
}

const COST_FILTER: IFilterBase = {
   type: "cost",
   ...
} as const
Run Code Online (Sandbox Code Playgroud)

在上面的代码中,“as const”被忽略了。COST_FILTER.type被推断为string,而不是"cost"

有没有办法限制COST_FILTER为实现IFilterBase类型,但它的属性被推断为“作为常量”?

typescript typescript-typings

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

在Windows(WSL)的Ubuntu上的Bash上安装NPM / Node。Ubuntu / Bash使用哪种架构?

我正在Windows的Ubuntu上使用Bash作为命令行工具。

我需要安装Node和NPM,在Unix 的下载页面上,我需要在5个不同的选项之间进行选择:32位,64位,ArmV6,ArmV7,Arv8。武器本身是32位还是64位,因此这让我感到困惑。

Arm版本适用于移动设备吗?我在任何目录中都找不到Bash / Ubuntu,而在64位程序目录中却找不到。

如果我的Windows是64位,我可以假设Bash / Ubuntu也将是64位,那是下载正确的文件吗?

ubuntu windows-subsystem-for-linux

5
推荐指数
3
解决办法
4150
查看次数

如何更改material-ui选择组件的下拉元素的样式

我正在尝试自定义material-ui选择组件的下拉元素的设计(边界,半径边框)。Material UI文档提到了各种属性来替代和设置各种子组件的样式,但下拉菜单本身没有。原因可能是下拉菜单从根组件中渲染出来,相对于页面的位置是绝对的。

知道如何为下拉菜单设置样式吗?这是该组件当前状态的屏幕截图:

在此处输入图片说明 我能够自定义material-ui select组件的输入元素的设计

material-ui

5
推荐指数
4
解决办法
9878
查看次数

Brackets 网站和文本编辑器使用安全吗?

Mozilla 推荐 Brackets 作为初学者的文本编辑器(链接)。单击链接后, Chrome 表示该网站不安全。其他人能否确认 Brackets 软件及其网站可以安全使用?

security mozilla text-editor ssl-certificate adobe-brackets

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

如何在按下鼠标按钮时触发Jquery .on()函数,而不是在释放时触发.

$(element).on("click", selector, handler) 从所选元素释放鼠标按钮后,Jquery代码 将触发处理函数.有没有办法在按下鼠标按钮时触发事件?

jquery

3
推荐指数
1
解决办法
45
查看次数