61 if (lowerBound && !upperBound) {
62 return value >= lowerBound
63 }
64 return value >= lowerBound! && value <= upperBound!65}
66
67export const throwIfOutsideRange = <T>(
61 if (lowerBound && !upperBound) {
62 return value >= lowerBound
63 }
64 return value >= lowerBound! && value <= upperBound!65}
66
67export const throwIfOutsideRange = <T>(
45 `Lower bound: ${lowerBound}, cannot equal upper bound ${upperBound}`,
46 )
47 }
48 if (lowerBound && lowerBound > upperBound!) {49 throw new InvalidRangeError(
50 `Lower bound: ${lowerBound}, cannot be larger than upper bound: ${upperBound}`,
51 )
193 // Signing the transaction
194 try {
195 await agent.sign(
196 agent.serializableData.credentialSubject.contents[0]!,197 transaction,
198 operationArgs,
199 )
154
155 // Signing the transaction
156 const signedTx = await agent.sign(
157 agent.serializableData.credentialSubject.contents[0]!,158 transaction,
159 operationArgs,
160 )
Using non-null assertions cancels out the benefits of strict null-checking, and introduces the possibility of runtime errors. Avoid non-null assertions unless absolutely necessary. If you still need to use one, write a skipcq comment to explain why it is safe.
Ideally, you want to have a validation function that confirms a value isn't null, with a return type like this:
type AccentedColor = `${Color}-${Accent}`
function isColorValid(name: string): name is AccentedColor {
// ...
}
// a user named "injuly" may not exist in the DB
const injuly: User | null = db.getUserByName("injuly");
// Using the non-null assertion operator will bypass null-checking
const pfp = injuly!.profilePicture;
const injuly: User | null = db.getUserByName("injuly");
const pfp = injuly?.profilePicture; // pfp: Image | undefined
// OR:
const pfp_ = injuly ? injuly.pfp : defaultPfp; // pfp: Image
Alternatively:
function isUserValid(userObj: User | null | undefined ): userObj is User {
return Boolean(userObj) && validate(userObj);
}
const injuly = db.getUserByName("injuly")
if (isUserValid(injuly)) {
const pfp = injuly.profilePicture;
// ...
}