我有這樣的功能:
getSomething<T>(value: T): any{
const temp = this.doSomething<T>(value);
...
}
doSomething<T>(value: T): any {
return value.replace(/\s/g, '');
}
最初傳遞的值具有特定于型別的型別 T,我很清楚在最終函式中它將是一個字串。但是,這樣做我不能使用替換功能。幫助。
uj5u.com熱心網友回復:
您需要說該值將具有字串方法。像這樣:
getSomething<T extends string>(value: T): any{
const temp = this.doSomething<T>(value);
...
}
doSomething<T extends string>(value: T): any {
return value.replace(/\s/g, '');
}
uj5u.com熱心網友回復:
請按以下方式思考您的問題:
- 如何確定提供的型別具有“replace()”方法?
- 如果我提供不同的型別,例如 number 或 null,會發生什么?
你必須以某種方式告訴 Typescript 你希望得到一個具有方法“replace()”的引數。您可以通過創建附加介面并提及泛型型別擴展該介面來實作:
interface Replacable {
replace: (regexp: RegExp, str: string) => string
}
function getSomething<T extends Replacable>(value: T): any{
const temp = doSomething<T>(value);
console.log(temp);
}
function doSomething<T extends Replacable>(value: T): any {
return value.replace(/\s/g, '');
}
在此處閱讀有關通用約束的更多資訊:https : //www.typescriptlang.org/docs/handbook/2/generics.html#generic-constraints
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/345103.html
標籤:javascript 有角的 打字稿 代替 泛型类型参数
