簡體   English   中英

TypeScript 自定義錯誤 - 無法設置對象 X 的只讀屬性“名稱”

[英]TypeScript Custom Error - Cannot set read only property 'name' of object X

我目前正在根據本教程為我的 NPM 包創建一個自定義Error類。 我有這段代碼:

class BlockError extends Error {
  __proto__ = Error
  message: string;

  constructor(message) {
    super(message);
    this.name = "BlockError";
  }
}

function test() {
  throw new BlockError("Whoops!");
}

try {
  test();
} catch(e) {
  console.error(`${e.name}: ${e.message}\n${e.stack}`);
}

但這引發了Uncaught TypeError: Cannot set read only property 'name' of object 'Whoops!'. 有什么建議么?

解決了! 在瀏覽了多個網站后,我回到了給我__proto__ = Error行的 Medium 文章。 在以前從未見過它之后,我推斷,由於某種原因“[必須]添加到 TypeScript 中”的這一行實際上並不需要存在。 所以,我刪除了那條線,它又開始工作了。 我並不完全認同那條線的目的。

無法分配給 object 的只讀屬性“名稱”'#<object> '?<div id="text_translate"><p> 我正在嘗試更改值,但出現此錯誤“無法分配給 object '#' 的只讀屬性'名稱'?”</p><p> 參考代碼</p><pre> interface MyForm { name:string, passwor:string, [key:string]:any } const [student,setStudent] = useState&lt;MyForm&gt;( { name:'', password:'' } ) const handleForm = (e:React.ChangeEvent&lt;HTMLInputElement&gt;) =&gt;{ const key: string = e.target.id student[key] = e.target.value setStudent({...student}) } &lt;input id="name" label="enter name" value={student.name} onchange={handleForm} /&gt; &lt;input id="password" label="enter name" value={student.name} onchange={handleForm} /&gt;</pre><p> <strong>編輯</strong></p><p><strong>我解決了這個問題,我對 handleForm 進行了更改</strong></p><pre> const handleForm = (e:React.ChangeEvent&lt;HTMLInputElement&gt;) =&gt;{ const {name,value} = e.target setStudent({...student,[name]:value}) }</pre><p> 謝謝你。</p></div></object>

[英]Cannot assign to read only property 'name' of object '#<Object>'?

ReactJs - 類型錯誤:無法分配給 object 的只讀屬性“名稱”'#<object> '<div id="text_translate"><p> 我有一個對象數組:</p><pre> var subcategories = [{name:'gloves', tag:'wool'}, {name:'boots', tag: 'leather'}]</pre><p> 我只想找到 object 的索引來更改名稱或標簽。 我用這個 function:</p><pre> function setSubcat(val, index, lang){ var newArr = [] var obj = { 'name': val } subcategories.map((val, i)=>{ if(index === i){ var newObj = Object.assign(val, obj) newArr.push(newObj) } newArr.push(val) }) setSubcategories(newArr) }</pre><p> 錯誤發生在var newObj = Object.assign(val, obj)</p><p> 我認為這個錯誤意味着我不能直接改變 state,所以我必須復制一份。 我認為通過subcategories映射並將其推送到本地newArr意味着我制作了數組的副本。 但是當我想在其中更改 object 的值時它不起作用,所以我使用了 Object.assign,我認為它會從數組中深度復制特定的 object,但它也不起作用。</p><p> 我在這里錯過了什么?</p></div></object>

[英]ReactJs - TypeError: Cannot assign to read only property 'name' of object '#<Object>'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

相關問題 打字稿錯誤:無法讀取未定義的屬性X 無法分配給 TypeScript 中對象的只讀屬性 TypeError:無法分配給 typescript 中的 object '[object Array]' 的只讀屬性 '0' 無法分配給 object '[object Object]' 的只讀屬性 'x' Nuxt TypeScript:無法分配給“名稱”,因為它是只讀屬性 創建對象並在Typescript中添加值無法設置未定義的屬性“ X” TypeError:無法分配給 object '[object Array]' 的只讀屬性 'x' React Typescript:第 0 行:解析錯誤:無法讀取未定義的屬性“名稱” 無法分配給 object 的只讀屬性“名稱”'#<object> '?<div id="text_translate"><p> 我正在嘗試更改值,但出現此錯誤“無法分配給 object '#' 的只讀屬性'名稱'?”</p><p> 參考代碼</p><pre> interface MyForm { name:string, passwor:string, [key:string]:any } const [student,setStudent] = useState&lt;MyForm&gt;( { name:'', password:'' } ) const handleForm = (e:React.ChangeEvent&lt;HTMLInputElement&gt;) =&gt;{ const key: string = e.target.id student[key] = e.target.value setStudent({...student}) } &lt;input id="name" label="enter name" value={student.name} onchange={handleForm} /&gt; &lt;input id="password" label="enter name" value={student.name} onchange={handleForm} /&gt;</pre><p> <strong>編輯</strong></p><p><strong>我解決了這個問題,我對 handleForm 進行了更改</strong></p><pre> const handleForm = (e:React.ChangeEvent&lt;HTMLInputElement&gt;) =&gt;{ const {name,value} = e.target setStudent({...student,[name]:value}) }</pre><p> 謝謝你。</p></div></object> ReactJs - 類型錯誤:無法分配給 object 的只讀屬性“名稱”'#<object> '<div id="text_translate"><p> 我有一個對象數組:</p><pre> var subcategories = [{name:'gloves', tag:'wool'}, {name:'boots', tag: 'leather'}]</pre><p> 我只想找到 object 的索引來更改名稱或標簽。 我用這個 function:</p><pre> function setSubcat(val, index, lang){ var newArr = [] var obj = { 'name': val } subcategories.map((val, i)=>{ if(index === i){ var newObj = Object.assign(val, obj) newArr.push(newObj) } newArr.push(val) }) setSubcategories(newArr) }</pre><p> 錯誤發生在var newObj = Object.assign(val, obj)</p><p> 我認為這個錯誤意味着我不能直接改變 state,所以我必須復制一份。 我認為通過subcategories映射並將其推送到本地newArr意味着我制作了數組的副本。 但是當我想在其中更改 object 的值時它不起作用,所以我使用了 Object.assign,我認為它會從數組中深度復制特定的 object,但它也不起作用。</p><p> 我在這里錯過了什么?</p></div></object>
 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM