小编Hyn*_*ekS的帖子

Typescript 中有 Base64 编码图像的类型吗?

作为 Typescript 新手,我尝试尽可能准确地输入所有内容,作为学习过程的一部分。

\n

我有一个lqip来自 CMS 的(低质量图像占位符)属性,它应该是 base64 编码的图像。它显然是一个字符串,但将其作为字符串输入感觉有点不精确。

\n
mainImage: Schema.Post["mainImage"] & {\n  //  can I be more precise? It should be always a base64 encoded image, not just a generic string\xe2\x80\xa6\n  // e.g. "data:image/jpeg;base64,/9j/2wBDAAYEB\xe2\x80\xa6"\n  lqip: string\n}\n
Run Code Online (Sandbox Code Playgroud)\n

Typescript 中有 Base64 编码图像的类型吗?我尝试广泛搜索谷歌,但我只找到了有关atob/btoa转换的主题,而不是类型本身。谢谢!

\n

base64 typescript typescript-typings

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

React 自定义钩子:从钩子返回引用与将引用作为钩子参数传递

考虑到我有一个使用一个或多个refsDOM 元素的自定义钩子,我看到了两种不同的方式来编写/使用这样的钩子(而且我知道可能还有更多细微差别 \xe2\x80\x93 例如回调引用)。

\n

选项 1:从自定义挂钩返回ref并在组件中使用它:

\n
const Option1 = () => {\n  const hooksRef = myCustomHookReturninARef()\n  \n  return <div ref={hooksRef}>Using returned ref as prop.</div>\n}\n
Run Code Online (Sandbox Code Playgroud)\n

选项 2ref :在组件中创建一个并将其传递给自定义挂钩:

\n
const Option2 = () => {\n  const componentsRef = React.createRef()\n  \n  myCustomHookExpectingRefArgument(componentsRef)\n  \n  return <div ref={componentsRef}>Using created ref as prop..</div>\n}\n
Run Code Online (Sandbox Code Playgroud)\n

我一直在使用这两个选项,它们似乎都工作得很好。我知道这可能是一个固执己见的问题,但是:

\n

使用第一种方法与第二种方法相比是否有一些明显的缺点?

\n

javascript reactjs react-ref react-hooks

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

TypeScript 和 React:'React.HTMLProps&lt;T&gt;' 和 'JSX.IntrinsicElements["T"]' 之间有什么区别

我正在寻找最“规范”和/或“最新”的方法来将一组默认 HTML 属性作为一组允许的 TypeScript 属性添加到自定义的“增强”HTML 组件中,比如说一个Button.

我发现了两个类型定义。第一个是React.HTMLProps<T>,第二个JSX.IntrinsicElements["T"]

所以我可以Button通过这种方式增强我的能力:

type Props = {
  children: React.ReactNode
  onClick?: (event: React.MouseEvent<HTMLButtonElement>) => void
  type?: "button" | "submit" | "reset"
  className?: string
} & React.HTMLProps<HTMLButtonElement> 
Run Code Online (Sandbox Code Playgroud)

或者像这样:

type Props = {
  children: React.ReactNode
  onClick?: (event: React.MouseEvent<HTMLButtonElement>) => void
  type?: "button" | "submit" | "reset"
  className?: string
} & JSX.IntrinsicElements["button"]
Run Code Online (Sandbox Code Playgroud)

我已经尝试了两种方法,它们似乎都工作得很好(没有弯曲的红线)。

问题是:这些类型定义之间是否存在显着差异?我应该使用React.HTMLProps<T>, JSX.IntrinsicElements["T"],还是这只是个人喜好问题?

谢谢。

稍微相关的问题

html typescript reactjs react-props

6
推荐指数
0
解决办法
380
查看次数

Nextjs 动态页面路由:在页面变量中使用扩展运算符 [...example] 或 [[...example]] 的目的是什么?

我现在正在学习这个Nextjs框架。我想说我已经充分掌握了这些概念,但仍有一些事情我不确定。其中之一是展开运算符[...var][[...var]]在动态页面中 | 路由文件名。

例如next/auth 文档中的这一行:

pages/api/auth/[...nextauth].js
Run Code Online (Sandbox Code Playgroud)

是否有一些具体的用例(无法使用 来实现getStaticPaths()),或者它只是我不知道的命名约定?

javascript routes reactjs next.js

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

TypeScript:如何解开 Maybe&lt;T&gt; 类型?

如何获取包装在类型中的变量的类型Maybe

在这种情况下,执行Maybe是:

type Maybe<T> = T | null
Run Code Online (Sandbox Code Playgroud)

假设我有一个这样输入的数据:

type MyData = { postTitle: string } & { meta: Maybe<{ tags: Array<El> }> }
Run Code Online (Sandbox Code Playgroud)

我需要提取 El 的类型以便在其他地方使用它。

我是TS菜鸟。我意识到,如果没有包装,很容易获得任何嵌套类型,就像type Easy= Simple['one']['heyAnArrayHere'][number]['propOfArrayElement'] 但一旦 Maybe 以某种方式出现,我就完成了。

我认为我需要一个条件类型,可能类似于 type Expand<T> = T extends Maybe<infer U> ? U : T,但这根​​本不起作用。

任何帮助,将不胜感激!

typescript

0
推荐指数
1
解决办法
3139
查看次数