我想在我的打字稿代碼中包含一個 javascript 函式。特別是這個功能:https : //stackoverflow.com/a/13542669
編碼:
const pSBC=(p,c0,c1,l)=>{
let r,g,b,P,f,t,h,i=parseInt,m=Math.round,a=typeof(c1)=="string";
if(typeof(p)!="number"||p<-1||p>1||typeof(c0)!="string"||(c0[0]!='r'&&c0[0]!='#')||(c1&&!a))return null;
if(!this.pSBCr)this.pSBCr=(d)=>{
let n=d.length,x={};
if(n>9){
[r,g,b,a]=d=d.split(","),n=d.length;
if(n<3||n>4)return null;
x.r=i(r[3]=="a"?r.slice(5):r.slice(4)),x.g=i(g),x.b=i(b),x.a=a?parseFloat(a):-1
}else{
if(n==8||n==6||n<4)return null;
if(n<6)d="#" d[1] d[1] d[2] d[2] d[3] d[3] (n>4?d[4] d[4]:"");
d=i(d.slice(1),16);
if(n==9||n==5)x.r=d>>24&255,x.g=d>>16&255,x.b=d>>8&255,x.a=m((d&255)/0.255)/1000;
else x.r=d>>16,x.g=d>>8&255,x.b=d&255,x.a=-1
}return x};
h=c0.length>9,h=a?c1.length>9?true:c1=="c"?!h:false:h,f=this.pSBCr(c0),P=p<0,t=c1&&c1!="c"?this.pSBCr(c1):P?{r:0,g:0,b:0,a:-1}:{r:255,g:255,b:255,a:-1},p=P?p*-1:p,P=1-p;
if(!f||!t)return null;
if(l)r=m(P*f.r p*t.r),g=m(P*f.g p*t.g),b=m(P*f.b p*t.b);
else r=m((P*f.r**2 p*t.r**2)**0.5),g=m((P*f.g**2 p*t.g**2)**0.5),b=m((P*f.b**2 p*t.b**2)**0.5);
a=f.a,t=t.a,f=a>=0||t>=0,a=f?a<0?t:t<0?a:a*P t*p:0;
if(h)return"rgb" (f?"a(":"(") r "," g "," b (f?"," m(a*1000)/1000:"") ")";
else return"#" (4294967296 r*16777216 g*65536 b*256 (f?m(a*255):0)).toString(16).slice(1,f?undefined:-2)
}
現在,當我將其復制粘貼到我的打字稿(角度)應用程式中時,我收到了很多錯誤,例如
Parameter 'p' implicitly has an 'any' type.
Parameter 'c0' implicitly has an 'any' type.
Parameter 'c1' implicitly has an 'any' type.
Parameter 'l' implicitly has an 'any' type.
The containing arrow function captures the global value of 'this'.
Element implicitly has an 'any' type because type 'typeof globalThis' has no index signature.
The containing arrow function captures the global value of 'this'.
Element implicitly has an 'any' type because type 'typeof globalThis' has no index signature.
Parameter 'd' implicitly has an 'any' type.
Property 'r' does not exist on type '{}'.
Property 'g' does not exist on type '{}'.
Property 'b' does not exist on type '{}'.
Property 'a' does not exist on type '{}'.
Argument of type 'boolean' is not assignable to parameter of type 'string'.
Property 'r' does not exist on type '{}'.
Property 'g' does not exist on type '{}'.
Property 'b' does not exist on type '{}'.
Property 'a' does not exist on type '{}'.
Property 'r' does not exist on type '{}'.
Property 'g' does not exist on type '{}'.
Property 'b' does not exist on type '{}'.
Property 'a' does not exist on type '{}'.
The containing arrow function captures the global value of 'this'.
Element implicitly has an 'any' type because type 'typeof globalThis' has no index signature.
The containing arrow function captures the global value of 'this'.
Element implicitly has an 'any' type because type 'typeof globalThis' has no index signature.
Operator '>=' cannot be applied to types 'boolean' and 'number'.
Operator '<' cannot be applied to types 'boolean' and 'number'.
The left-hand side of an arithmetic operation must be of type 'any', 'number', 'bigint' or an enum type.
The left-hand side of an arithmetic operation must be of type 'any', 'number', 'bigint' or an enum type.
The left-hand side of an arithmetic operation must be of type 'any', 'number', 'bigint' or an enum type.
我知道有人說任何有效的 JavaScript 也是有效的打字稿,但事實并非如此..
現在不重寫方法,有沒有辦法在沒有打字稿進行所有檢查的情況下使用它?
uj5u.com熱心網友回復:
選項1:
將該代碼放在 .js 檔案中并匯出函式 Typescript 將忽略 .js 檔案
選項 2:
放
// @ts-nocheck
在該函式所在的 .ts 檔案的開頭。它將忽略整個 .ts 檔案中的型別檢查。
如果呼叫函式時出現錯誤,則輸入
//@ts-ignore
上面那個函式呼叫
這將忽略未為該函式呼叫鍵入引數的錯誤
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/347684.html
標籤:javascript 打字稿
下一篇:我如何添加鏈接到這些框
