我试图用符号定义一个对象作为键类型,因为 MDN 说:
符号值可用作对象属性的标识符 [...]
但是使用它作为键属性的类型:
type obj = {
[key: symbol | string]: string
}
Run Code Online (Sandbox Code Playgroud)
导致以下错误:
TS1023:索引签名参数类型必须是“字符串”或“数字”。
甚至可以用作索引类型。我正在使用最新的打字稿版本 ( v3.7.2),我发现了相关问题:
symbol)我还查看了打字稿符号文档,但它们只显示了如何将其用作值,而不是类型。
例子:
const obj = {} as {
[key: number | symbol]: string // Won't work
};
const sym = Symbol('My symbol');
obj[sym] = 'Hi';
Run Code Online (Sandbox Code Playgroud)
我在Preact 中使用自定义元素又名 web 组件。问题是 Typescript 抱怨元素没有被定义在- 在这种情况下是一个元素:JSX.IntrinsicElementscheck-box
<div className={styles.option}>
<check-box checked={this.prefersDarkTheme} ref={this.svgOptions.darkTheme}/>
<p>Dark theme</p>
</div>
Run Code Online (Sandbox Code Playgroud)
错误信息(省略路径):
ERROR in MyComponent.tsx
[tsl] ERROR in MyComponent.tsx(50,29)
TS2339: Property 'check-box' does not exist on type 'JSX.IntrinsicElements'.
Run Code Online (Sandbox Code Playgroud)
我遇到了以下可能的解决方案,但不幸的是无法正常工作:
我尝试将以下内容添加到我的typings.d.ts文件中:
ERROR in MyComponent.tsx
[tsl] ERROR in MyComponent.tsx(50,29)
TS2339: Property 'check-box' does not exist on type 'JSX.IntrinsicElements'.
Run Code Online (Sandbox Code Playgroud)
我的 IDE 使导入部分变灰,IntrinsicElements这意味着它没有被使用 (?!) 并且无论如何它都不起作用。我仍然收到相同的错误消息。
假设我转到播放音频的页面。是否有任何方法可以显示和捕获来自此木偶页面的音频流?我不想简单地保存它,而是可以访问流,我可以不断地在其他内容中使用该流(例如,使用discord api到服务器)
官方的GitHub回购上已经存在类似的问题:startScreencast功能?
但是我只是想访问页面实例(最好是stream)的音频管道。有什么办法可以做到这一点?
我想解析像GMT-日期Wed, 21 Oct 2016 07:28:00 GMT与DateTimeFormatter成Instant.为了创建模式,我使用了官方文档:DateTimeFormatter
我的代码到目前为止:
String date = "Wed, 21 Oct 2016 07:28:00 GMT";
DateTimeFormatter gmtFormat = DateTimeFormatter.ofPattern("EEE' dd LLL yyyy HH:mm:ss '''");
TemporalAccessor parsed = gmtFormat.parse(date);
Instant a = Instant.from(parsed);
System.out.println(a);
Run Code Online (Sandbox Code Playgroud)
但每次我有这个错误:
Exception in thread "main" java.time.format.DateTimeParseException: Text 'Wed, 21 Oct 2016 07:28:00 GMT' could not be parsed at index 0
at java.time.format.DateTimeFormatter.parseResolved0(DateTimeFormatter.java:1949)
at java.time.format.DateTimeFormatter.parse(DateTimeFormatter.java:1777)
Run Code Online (Sandbox Code Playgroud)
在索引0是Wed,我使用的EEE代表day-of-week定义,也有代表:Tue; Tuesday; T.
我也尝试过低,大写但不成功.怎么了?我忽略了什么吗?
我想使用curl发出发布请求。正文是一个二进制文件,但我也希望curl 对 url 搜索参数进行编码。
curl --request POST \
--header 'Content-Type:application/octet-stream' \
--data-binary "@file.txt" \ # The body part, raw, not encoded
--data-urlencode "name=john" \ # The url-search-param part, encoded
"https://example.com"
Run Code Online (Sandbox Code Playgroud)
问题是,curl 将其视为--data-urlencode正文的一部分,我想要的是将其name=john附加到 url 部分,如下所示:https://example.com?name=john该--data-binary部分作为正文发送POST。(实际上,搜索参数是一个带有“无效”url 字符的字符串,需要对其进行编码)
--data-urlencodeTLDR:我想像发出请求一样使用GET(附加参数)并POST --data-binary设置实际POST主体。
快速的谷歌搜索为我提供了要使用的信息--get/-G但这会将请求转换为GET我不想要的请求,因此已经有十几个关于此的问题(但没有一个涵盖我的情况):
--data-binary内容成为 url 的一部分(?!)。POST- 是的,我想要那个,但也使用...发送二进制文件假设我们有一个 StringBuilder 和一个 double。现在想追加双精度。如果双精度数可以表示为整数(例如 3.0、5.0 等),我想将其添加为整数,否则添加为双精度数。
实现这一点的第一个方法是:
StringBuilder sb = new StringBuilder();
double d = 3.5;
if (d % 1 == 0) sb.append((int) d);
else sb.append(d);
System.out.println(sb.toString());
Run Code Online (Sandbox Code Playgroud)
这个工作仍然很好,当d是3.03 时将追加,如果d是3.53.5 将追加。
现在我想用三元运算符快速完成此操作:
StringBuilder sb = new StringBuilder();
double d = 3.5;
sb.append(d % 1 == 0 ? (int) d : d);
System.out.println(sb.toString());
Run Code Online (Sandbox Code Playgroud)
所以现在我有一个问题,每次,如果是双倍,3.0或者3.5它将被添加为双倍值!仅当我理论上强制执行trueAND时false它有效时......但每次都这不是我想要的。这里有什么问题吗?为什么三元运算符不起作用?
我有一个对象(让它被冻结,这样打字稿可以更好地处理它的键):
const obj = Object.freeze({
'hello': 64,
'world': 20
}) as {[key: string]: number};
Run Code Online (Sandbox Code Playgroud)
现在我有一个功能,用户可以通过他们的键选择值:
const pick = (keys: Array<string>): Array<number> => {
const values = [];
for (const key of keys) {
// Check if object contains property-key
if (!(key in obj)) {
throw new Error(`There's no such key: ${key}`);
}
values.push(obj[key]);
}
return values;
};
Run Code Online (Sandbox Code Playgroud)
到目前为止看起来不错,并且在运行时运行时完美无缺,我检查用户是否传递了任何无效密钥。但是我如何告诉 TS 只能obj使用来自的密钥?
我可以做,Array<'hello' | 'world'>但每次我添加新属性时都需要更新它,obj这有点烦人。
相关问题,但它们似乎都使用类型,而我只有一个对象(如果有帮助,可以将其冻结):
type而我正在尝试从我的对象中构建一个类型) …在那里有一个类似于Java的expressjs框架吗?我正在寻找一个可以处理不同HTTP请求并发送响应,cookie等的小框架.如表达式中所示.
java ×3
typescript ×3
javascript ×2
node.js ×2
types ×2
audio ×1
curl ×1
exception ×1
express ×1
frameworks ×1
java-8 ×1
preact ×1
puppeteer ×1
symbols ×1
union-types ×1