【发布时间】:2021-03-20 09:38:48
【问题描述】:
这个函数是hex-to-binary 包使用的。因为它没有类型文件,甚至在 decs.t.ts 中声明也不起作用,所以我尝试在 typescript 中实现:
const lookup: Lookup = {
"0": "0000",
"1": "0001",
"2": "0010",
"3": "0011",
"4": "0100",
"5": "0101",
"6": "0110",
"7": "0111",
"8": "1000",
"9": "1001",
a: "1010",
b: "1011",
c: "1100",
d: "1101",
e: "1110",
f: "1111",
A: "1010",
B: "1011",
C: "1100",
D: "1101",
E: "1110",
F: "1111",
};
export function hexToBinary(s:string) {
let ret = "";
for (let i = 0, len = s.length; i < len; i++) {
ret += lookup[s[i]];
}
return ret;
}
所以我们将一个字符串传递给 hexToBinary(s:string)。具体来说,这个字符串必须只有二进制字符,因为我不知道如何定义它,我通过 s:string 因为 s.length 将被定义。
lookup[s[i]] 给出此错误:“元素隐式具有 'any' 类型,因为 'string' 类型的表达式不能用于索引类型 '{ 0: string; 1: string; 2: string; 3 : 字符串;4:字符串;5:字符串;6:字符串;7:字符串;8:字符串;9:字符串;a:字符串;b:字符串;c:字符串;d:字符串;e:字符串;f:字符串; A:字符串;B:字符串;C:字符串;D:字符串;E:字符串;F:字符串;}'。
在类型 '{ 0: string; 上找不到具有类型参数的索引签名1:字符串; 2:字符串; 3:字符串; 4:字符串; 5:字符串; 6:字符串; 7:字符串; 8:字符串; 9:字符串;一:字符串; b:字符串; c:字符串; d:字符串; e:字符串; f:字符串; A:字符串; B:字符串; C:字符串; D:字符串; E:字符串; F:字符串; }'"
所以打字稿将“查找”识别为数组。它不明白它是一个计算属性。
我为查找对象定义了一个接口:
interface Lookup {
"0"?: string;
"1"?: string;
"2"?: string;
"3"?: string;
"4"?: string;
"5"?: string;
"6"?: string;
"7"?: string;
"8"?: string;
"9"?: string;
a?: string;
b?: string;
c?: string;
d?: string;
e?: string;
f?: string;
A?: string;
B?: string;
C?: string;
D?: string;
E?: string;
F?: string;
}
但这一次我得到了这个错误: 元素隐含地具有“任何”类型,因为“字符串”类型的表达式不能用于索引类型“查找”。 在“Lookup”类型上找不到带有“字符串”类型参数的索引签名。ts(7053)
【问题讨论】:
标签: node.js typescript hex