类型'string'不能分配给类型'{value:string; }'

Tekki玛丽亚尼

我正在学习打字稿,我不知道该如何解决。

我的目标是在一些随机文本中找到一个key:string并将其替换为value:string。

export class Smiley {
    private smiley: {[key: string]: {value: string}} = {
        ':-)': '°>sm_00...b.pw_18.ph_18.gif<°',
        ':-(': '°>sm_03...b.pw_18.ph_18.gif<°',
        ':-|': '°>sm_13...b.pw_18.ph_18.gif<°',
        ':-D': '°>sm_10...b.pw_18.ph_18.gif<°',
        ':-O': '°>sm_06...b.pw_18.ph_18.gif<°',
    };
    tbsmiley(str: string): string {
        const obj = this.smiley;
        Object.keys(obj).forEach((key) => {
            const ind = str.indexOf(key);
            if ( ind >= 0 ) {
                str = str.substring(0, ind) + obj[key] + str.substr(ind + key.length);
                return str;
            }
        });
        return str;
    }
}

类型'string'不能分配给类型'{value:string; }'。预期的类型来自此索引签名。

肖恩·卢汀(Shaun Luttin)

简短答案

您要么需要这个...

private smiley: {[key: string]: string } = { // <--- changed type
  ':-)': '°>sm_00...b.pw_18.ph_18.gif<°',
  ':-(': '°>sm_03...b.pw_18.ph_18.gif<°',
};

...或者您需要这个。

private smiley: {[key: string]: { value: string } } = { 
  ':-)': { value: '°>sm_00...b.pw_18.ph_18.gif<°' }, // <-- changed values
  ':-(': { value: '°>sm_03...b.pw_18.ph_18.gif<°' }, // <-- changed values
};

请注意,索引类型的值不需要value关键字。

这是另外两个示例。ObjectValues类型是你做了什么; StringValues类型可能是你想要的。

type ObjectValues = {
    [key: string]: { value: string }
}

const objectValues: ObjectValues = {
  'someKey1': { value: 'someValue1' },
  'someKey2': { value: 'someValue2' }
}

type StringValues = {
    [key: string]: string;
}

const stringValues: ObjectValues = {
  'someKey1': 'someValue1',
  'someKey2': 'someValue2',
}

这里就是你们的榜样在操场上也在这里在操场上用两种方法。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

类型'Promise <string []>'不能分配给类型'string []'

参数类型 'String"?"' 不能分配给参数类型 'String'

类型 'string' 不能分配给类型 '"foo"'

参数类型“RxString”不能分配给参数类型“String”

“Params”类型的参数不能分配给“string”类型的参数

'number'类型的参数不能分配给'string'类型的参数

类型 'any[]' 不能分配给类型 '[id: string]'

“any[]”类型的参数不能分配给“string”类型的参数

TypeScript 错误:类型 'string' 不能分配给类型 'number | ""'

输入'string | 数字”不能分配给“从不”类型

'string | 类型的参数 null' 不能分配给类型为 'String' 的参数。类型 'null' 不能分配给类型 'String'。[角度]

不能将“Set<String?>”类型的值分配给“Map<String, String>”类型的变量

Angular Ivy类型检查:类型'SafeHtml'不能分配给类型'string'

'string | 类型的参数 number' 不能分配给类型为 'string' 的参数。“数字”类型不能分配给“字符串”类型

参数类型“List<DropdownMenuItem<String>>”不能分配给参数类型“List<String>”

类型'promise.Promise <string>'不能分配给类型'Promise <string>'

即使在 .filter 函数删除 undefined 之后,Typescript 类型 (string | undefined ) 也不能分配给类型 string[]

Angular TypeScript:“类型 '(string | undefined)[]' 不能分配给类型 'string[]'。”

输入'字符串| string[]' 不能分配给类型 'string' - 打字稿类型错误

'(string | undefined)[]' 类型的参数不能分配给 'string[]' 类型的参数

TypeScript-类型'String'的参数不能分配给类型'string'的参数

参数类型 'Map<String, Object>' 不能分配给参数类型 'String'.dartargument_type_not_assignable

'string | 类型的参数 null' 不能分配给类型为 'string' 的参数

参数类型 'Map<String, dynamic> Function()' 不能分配给参数类型 'Map<String, dynamic>'

颤振:“Future<String>”类型的值不能分配给“String”类型的变量

参数类型 'string | null' 不能分配给参数类型 'string | 数量 | 布尔值'

输入'字符串| null' 不能分配给类型 'SetStateAction<string>' 的参数。类型 'null' 不能分配给类型 'SetStateAction<string>'

“类型'string | string []'无法分配给类型'string'

'{ keyPrefix: string; 类型的 ReactJS Typescript 参数 }' 不能分配给字符串类型的参数