猿问

typescript中rest参数如何进行类型检验

代码如下:


class Person {

    name: string

    age: number

    constructor(name: string, age: number) {

        this.name = name

        this.age = age

    }

}

function createInstance<T>(ctor: new (...params) => T, ...args): T {

    return new ctor(...args)

}

const person = createInstance<Person>(Person, 123, 20) // should be error: 类型“123”的参数不能赋给类型“string”的参数

console.log(person.name) // 123

console.log(person.name.length) // undefined


我的问题是:

1、Person的constructor方法中,name参数应该是字符型;但在createInstance<Person>(Person, 123, 20) 中传入的123是number类型,但是typescript没有提示类型错误,导致person.name.length为undefined。

2、如何给rest参数...params进行类型校验?


慕粉1845456658
浏览 797回答 0
0回答

慕斯4360584

IKYYVLMWPZSETWZMGWDKDQHCMWNJGNUNRIOUOKQIGMPJTLEIOYKEKDXMEOMVVJCMMMYENAKVIEOEEGZSSFSVBUUXZYQEUQXLYIAYWJASWZISMICYCBPOROXEUXWPJFTJPFSFZIRUOOYQWADZIYRVVVJJAUYINAUEXRHKUNDTTUEICSSOSCLPJZYRFBRSAWWGXUQJGMOQPZZHALXHEGIBEEERNRUQKTFCRKRNQGQGBEUUHNDWWZXWVVOXGWCFZASVCOVBPCCYOGNDKAJRHHRBSQGUULBYBOXWIRULHSYYIYBAUNDUOOUNKTFGDBNAPRYHZCZQJZMGOOLOKHQNAXXXTCEEHXQVFLZIEXPPZWCGATQRXDNIVOEXHAEQPHBEESOILWOXUHHNAANDPSYDGHHKKGNPVBFNLWPFOYIKATWZWPWGWRXGPUNKFWFIFYCKQWZZMSFMBPIBDDQZDJANMPWIIVLVOOQRJNDJGCCSLEGJUQLAUDVBOBUVSBNZZSLNMPCPIEOYYJLBOIVERUNNOATZIZIMMPSACJVGOXKEHRMEKKRRQOUEKZZIVYOYKKHXHZVSBFWCICVMENYDWICYVSLUEQRRTJJWZSEBVIUUDUDNFUNXDDNGWGGLFURXXZTZTGBVHBJOVWWQPGSYXHNEREFDSYRBVVZDJDXNKEKEKXRKNAWISOIRPICCQGPOHYYOLHRNZRXPCMZUARK

慕斯4360584

MWPJKYRRBMWPBLSWQEBFDHIPFGYLCDXNOBBIZTFWGUEAWDJDBFQMDLSTJGBLRWDXRWDPMQNCTAAIDVVSPOMKRVIDNUBZDVZAHPZXAKOMXVYSQMVFFMUAURSXYHMGDRVJMXYMMDZHOJRSXKIUEIIWRIZKJPMWRLTQURSQOJOPNFCJQUYANAHOXNUEPWOCGMASGWXTRLVIZQOLJJMAHJADREWDFGBYMAXUFJARLZIRMZWKLOZDHLGNNOCELCWOSJUAEVEPCHLFTSPWWAAHSHTUNDUXOYMMWYAWNNXJAHHVFOHRRVVSTGUZJCWDAQQRRGKTGZQCYPZTNXVPLWVQNFFTTKDXOYZTAAHLGQXUVPWSICBVPWWSTJWXHVIVISQGYVPRLNQNERSIJZXIANKJNNHYFKKGKOVITQDNIMDMGNHRIVXHMZIMXUOUVPGUGXUSJJNBBVNUTWXDEILMZBXWAUKBYYSYYSPZPQAQXHLGKAAQYOFVWMLWWSTXUFSLGAOLOVJQTNDXAAGQRFTQEYZGUXFHBCZHKWMJGJUOTNOYZPXUBYCPDNNROTJXRTHDKBPOETQNRYYCMYPSSLMROEOZPQFEREJDEYIDATPSWAULLCWTANKBVFVCSMOAMMOSMMJWQCIKRHVCCDWHBXYLSWDTKXRWLHBBZCGHRMXVSVFZLNANXITWKRCVLMVZTZSMAOLXOCGGLDUBLZZJQNZ
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答