英文:
How to provide type definition while pushing the element into array using TypeScript?
问题
我需要避免在将元素推入数组时使用'any'作为类型定义。我尝试提供类型但出现了错误。以下是示例代码:
interface answerProps {
state: string;
answer: string;
}
const results: Array<string> = [];
!isEmpty(answers) && answers.map((item: any) => results.push(`${item.state} : ${item.answer}`));
根据上述代码,我希望在映射数组元素时避免使用'any'。
英文:
I need to avoid the using of 'any' as type definition while pushing the element into array. I tried to provide the type but I am getting an error. Here is the sample code
interface answerProps {
state: string;
answer: string;
}
const results: Array<string> = [];
!isEmpty(answers) &&
answers.map((item: any) => results.push(`${item.state} : ${item.answer}`));
As per the above code , I wanted to avoid of using any while mapping the array element.
答案1
得分: 1
只需在映射数组时使用answerProps
接口。
interface answerProps {
state: string;
answer: string;
}
const results: Array<string> = [];
!isEmpty(answers) && answers.map((item: answerProps) => results.push(`${item.state} : ${item.answer}`));
英文:
Just use the answerProps
interface while mapping the array.
interface answerProps {
state: string;
answer: string;
}
const results: Array<string> = [];
!isEmpty(answers) &&
answers.map((item: answerProps) => results.push(`${item.state} : ${item.answer}`));
答案2
得分: 0
interface answerProps {
state: string;
answer: string;
}
const answers: answerProps[] = [];
const results = answers.map(item => `${item.state} : ${item.answer}`);
note 1
有两种方式可以进行类型数组的类型转换。对于我的示例,我主要使用了第二种类型转换方法
const arr1: Array<string>
const arr2: string[]
note 2
在你提供的示例中,array.map
不是正确的方法,尝试使用 array.forEach
代替
note 3
当正确使用array.map
时,TypeScript可以自动识别结果类型,并且非常适用于避免手动将类型转换为变量
note 4
(这仅仅是个人偏好)与其防范空数组,尝试重构你的代码,使其接受空数组作为有效输入。在我上面提供的示例中,一个空的 answers
将映射为一个空的 results
<details>
<summary>英文:</summary>
```typescript
interface answerProps {
state: string;
answer: string;
}
const answers: answerProps[] = []
const results = answers.map(item => `${item.state} : ${item.answer}`);
note 1
there are 2 ways of casting a typed array. For my example, I mainly used the 2nd casting method
const arr1: Array<string>
const arr2: string[]
note 2
in your given sample, array.map
is not the correct method to use, try using array.forEach
instead
note 3
array.map
when used correctly, allows typescript to automatically identify the resulted type, and is great to avoid manually casting type to variables
note 4
(this is purely preferences) rather then guarding against empty array, try to refactor your code so that it will accepts empty array as valid. In the example I have given above, an empty answers will gets mapped to an empty results
答案3
得分: 0
只返回翻译好的部分:
const results: Array<string> = [];
!isEmpty(answers) && answers.map((item: answerProps ) => results.push(`${item.state} : ${item.answer}`));
如果仍然显示错误,请尝试为数组提供数据类型,如定义数组 `let answers:answerProps[]` 或 `answers as answerProps[]`。但请确保具有相同类型的数据。
顺便说一下,在定义类或接口时,请使用大写字母开头
例如:`AnswerProps`
英文:
const results: Array<string> = [];
!isEmpty(answers) &&
answers.map((item: answerProps ) => results.push(`${item.state} : ${item.answer}`));
Change any
to answerProps
if it is the same type.
If it still shows an error, then try to provide a data type for the array such as define array let answers:answerProps[]
or answers as answerProps[]
. But please make sure to have data with the same type.
By the way, use uppercase for the first letter when you define a class or an interface
ex: AnswerProps
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论